class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
Bieg:Wbudowana wersja własności bez danych?
[email protected]:~/Desktop$ python3 test.py
2
1
Books.referTable
being a data descriptor nie jest zasłonięta przez book.__dict__['referTable']
:
Funkcja
property()
jest zaimplementowany jako deskryptor danych. W związku z tym instancje nie mogą przesłonić zachowania właściwości.
Aby go śledzić, zamiast wbudowanego deskryptora należy użyć własnego deskryptora, a nie property
. Czy istnieje wbudowany deskryptor taki jak property
, ale który nie jest danych?
Co próbujesz tutaj zrobić? Czego próbujesz osiągnąć, czego nie można osiągnąć zmieniając sposób, w jaki używasz funkcji '' @ property'' na funkcjach? –
@ Legatware, próbuję zrobić leniwy deskryptor. Czasami chcę ustawić 'referTable' w' __init__'. W innych przypadkach chcę, aby deskryptor obliczył wartość i nadpisał deskryptor w taki sam sposób jak w '__init__'. Tutaj (http://blog.pythonisito.com/2008/08/lazy-descriptors.html) jest to osobny deskryptor, który będzie dla mnie działał. W moim przypadku chcę go uprościć, używając w miarę możliwości wbudowanego deskryptora, a "właściwość" nie działa dla mnie. – warvariuc
"Uprość to"? Czy możesz wyjaśnić, co chcesz uprościć? Dlaczego przykładowy link nie działa dla Ciebie? –