class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
运行中:
vic@ubuntu:~/Desktop$ python3 test.py
2
1
Books.referTable
作为数据描述符没有被book.__dict__['referTable']
覆盖:
property()
函数是作为数据描述符实现的。因此,实例不能覆盖属性的行为。
要进行覆盖,我必须使用自己的描述符而不是内置的property
描述符。是否有像property
一样但不是数据描述符的内置描述符?
__init__
中设置referTable
。在其他情况下,我希望描述符计算该值并覆盖描述符,就像在__init__
中所做的那样。在这里(http://blog.pythonisito.com/2008/08/lazy-descriptors.html)为此创建了一个单独的描述符,这对我很有用。在我的情况下,如果可能的话,我想简化它,使用内置描述符,但`property`对我不起作用。 - warvariucproperty
是一个非数据描述符,我可以使用它来代替自己编写的描述符。这是我的简化。只是好奇是否存在标准模块中的非数据版本的property
。这就是全部。我的问题不是关于解决方法的。 - warvariuc