class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
運行:內置非數據版本的屬性?
[email protected]:~/Desktop$ python3 test.py
2
1
Books.referTable
being a data descriptor不受book.__dict__['referTable']
陰影:
property()
的功能被實現爲一個數據描述符。 因此,實例不能重寫屬性的行爲。
要隱藏它,而不是property
內置描述符我必須使用我自己的描述符。是否有像property
這樣的內置描述符,但它是非數據?
你想在這裏做什麼?你想通過改變你在函數上使用'@ property''的函數來實現這個目標是不可能實現的? –
@Lattyware,我試圖做一個懶惰的描述符。有時我想'referTable'在'__init__'中設置。在其他情況下,我希望描述符計算值,並以'__init__'中的方式重寫描述符。在這裏(http://blog.pythonisito.com/2008/08/lazy-descriptors.html),它是一個單獨的描述符,這對我來說很有用。在我的情況下,我想簡化它,如果可能的話使用內置的描述符,而'property'不適合我。 – warvariuc
'簡化它'?你能否澄清你想簡化的內容?爲什麼你鏈接的例子不適合你? –