【发布时间】:2019-11-09 12:16:43
【问题描述】:
我试图了解描述符在 Python 中的工作原理。我有以下代码sn-p。
>>> class D(object):
def __get__(*_):
print('get called')
def __set__(*_):
print('set called')
>>>
>>> class Person(object):
name = D()
>>>
>>> jane = Person()
>>> jane.name
get called
>>> jane.name = 'Janny'
set called
>>> Person.name
get called
>>> Person.name = 'Jack'
>>>
当使用类名访问描述符属性name时,即调用Person.nameget方法。但是,当我尝试使用相同的方式设置值时,即 Person.name = 'Jack' set 不会被调用。在这里,我期待 set 被调用。
我无法理解这种行为。
我正在使用 Python 3.8。
【问题讨论】:
标签: python python-3.x python-descriptors