Код: Выделить всё
object.__get__(self, instance, owner=None)Этот метод должен возвращать вычисленное значение атрибута или вызывать исключение AttributeError.
PEP 252 указывает, что __get__() вызываемый с одним или двумя аргументами. Собственные встроенные дескрипторы Python поддерживают эту спецификацию; однако вполне вероятно, что некоторые сторонние инструменты имеют дескрипторы, которым требуются оба аргумента. Собственная реализация Python __getattribute__() всегда передает оба аргумента, независимо от того, требуются они или нет.
Код: Выделить всё
object.__set__(self, instance, value)Обратите внимание: добавление __set__() или __delete__() меняет тип дескриптора на «дескриптор данных». Дополнительную информацию см. в разделе «Вызов дескрипторов».
Код: Выделить всё
object.__delete__(self, instance)Почему __get__ принимает владельца, а __set__ и __delete__ — нет?
Означает ли это, что когда дескриптор предоставляет оба __get__ и __set__,
- мы можем получить атрибут независимо от того, принадлежит ли он экземпляру класса владельца или классу владельца,
мы можем устанавливать и удалять атрибут, когда он принадлежит экземпляру класса-владельца, но не когда он принадлежит классу-владельцу?
Подробнее здесь: https://stackoverflow.com/questions/449 ... ete-do-not
Мобильная версия