class Books():
def __init__(self):
self.__dict__['referTable'] = 1
@property
def referTable(self):
return 2
book = Books()
print(book.referTable)
print(book.__dict__['referTable'])
de reproducción:¿Versión incorporada sin datos de la propiedad?
[email protected]:~/Desktop$ python3 test.py
2
1
Books.referTable
being a data descriptor no se ve ensombrecido por book.__dict__['referTable']
:
La función
property()
se implementa como un descriptor de datos. En consecuencia, las instancias no pueden anular el comportamiento de una propiedad.
Para sombrearlo, en lugar de property
descriptor incorporado debo usar mi propio descriptor. ¿Hay un descriptor incorporado como property
pero que no es de datos?
¿Qué estás tratando de hacer aquí? ¿Qué intenta lograr que no se pueda lograr cambiando la función en la que está utilizando '' @ property'' en las funciones? –
@Lattyware, estoy tratando de hacer un descriptor perezoso. A veces quiero que 'referTable' se establezca en' __init__'. En otros casos, quiero que el descriptor calcule el valor y anule el descriptor de la misma manera que en '__init__'. Aquí (http://blog.pythonisito.com/2008/08/lazy-descriptors.html) se ha convertido en un descriptor separado para eso, que me funcionaría. En mi caso, quiero simplificarlo, utilizando si es posible un descriptor incorporado, y 'property' no funciona para mí. – warvariuc
'Simplificarlo'? ¿Podría aclarar lo que quiere simplificar? ¿Por qué el ejemplo que vincula no funciona para usted? –