Хотя метод установки может возвращать значение, он предназначен для вызова в контексте, где это возвращаемое значение будет проигнорировано. В чем-то вроде
p = Person()
p.full_name = "John Doe"
присвоение будет выполнено Person.full_name.__set__(p, "John Doe")
. Если вы посмотрите в инструкции к дескриптору, вы увидите раздел , который демонстрирует, как класс property
может быть определен в чистом Python. Наиболее важным для этого вопроса является то, как __set__
будет реализован:
def __set__(self, obj, value):
if self.fset is None:
raise AttributeError("can't set attribute")
self.fset(obj, value)
self.fset
- ваш установщик. Обратите внимание, что его возвращаемое значение игнорируется.