Почему метод __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__ в этой ситуации.