Как сделать Obj-C Категории в Python?

Obj-C (который я не использовал в течение длительного времени) имеет то, что называетсякатегории продлить занятия. Объявляя категорию с новыми методами и компилируя ее в вашу программу, все экземпляры класса неожиданно получают новые методы.

У Python есть возможности mixin, которые я использую, но mixins нужно использовать снизу программы: класс должен объявить это сам.

Предусмотренный вариант использования категории: скажем, у вас есть большая иерархия классов, которая описывает различные способы взаимодействия с данными, объявляя полиморфные способы получения различных атрибутов. Теперь категория может помочь потребителю этих описывающих классов, реализовав удобный интерфейс для доступа к этим методам в одном месте. (Метод категории может, например, попробовать два разных метода и вернуть первое определенное (не None) возвращаемое значение.)

Любой способ сделать это в Python?

Иллюстративный код

надежда это проясняет, что я имею в виду. Дело в том, что категория похожа на совокупный интерфейс, который может изменить потребитель AppObj вего код.

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())

Ответы на вопрос(3)

Ваш ответ на вопрос