Почему метод __get__
в дескрипторе python принимает класс владельца как третий аргумент? Можете ли вы привести пример использования?
Первый аргумент (self
) самоочевиден, второй (instances
) имеет смысл в контексте типично отображаемого шаблона дескриптора (ex to follow), но я никогда не видел третьего (owner
). Может ли кто-нибудь объяснить, что используется для этого?
Просто в качестве справки и облегчения ответов это типичное использование дескрипторов, которые я видел:
class Container(object):
class ExampleDescriptor(object):
def __get__(self, instance, owner):
return instance._name
def __set__(self, instance, value):
instance._name = value
managed_attr = ExampleDescriptor()
Учитывая, что доступно instance.__class__
, все, что я могу представить, это то, что явно передача класса имеет непосредственное отношение к дескриптору из класса вместо экземпляров (ex Container.managed_attr
). Тем не менее, я не понимаю, что можно было бы сделать в __get__
в этой ситуации.