Como fazer Categorias Obj-C em Python?

Obj-C (que eu não uso há muito tempo) tem algo chamadocategorias para estender classes. Declarando uma categoria com novos métodos e compilando-a em seu programa, todas as instâncias da classe de repente possuem os novos métodos.

O Python tem possibilidades de mixagem, que eu uso, mas mixins devem ser usados ​​a partir do final do programa: a classe tem que declarar ele mesmo.

Caso de uso da categoria Previsto: digamos que você tenha uma hierarquia de classes grande que descreva formas diferentes de interagir com dados, declarando formas polimórficas de obter atributos diferentes. Agora, uma categoria pode ajudar o consumidor dessas classes descrevendo implementando uma interface conveniente para acessar esses métodos em um único local. (Um método de categoria poderia, por exemplo, tentar dois métodos diferentes e retornar o primeiro valor de retorno definido (não-Nenhum).)

Qualquer maneira de fazer isso em Python?

Código ilustrativo

I esperança isso esclarece o que quero dizer. O ponto é que a categoria é como uma interface agregada, que o consumidor do AppObj pode mudar emEstá código.

class AppObj (object):
  """This is the top of a big hierarchy of subclasses that describe different data"""
  def get_resource_name(self):
    pass
  def get_resource_location(self):
    pass

# dreaming up class decorator syntax
@category(AppObj)
class AppObjCategory (object):
  """this is a category on AppObj, not a subclass"""
  def get_resource(self):
    name = self.get_resource_name()
    if name:
      return library.load_resource_name(name)
    else:
      return library.load_resource(self.get_resource_location())

questionAnswers(3)

yourAnswerToTheQuestion