Ver el simple ejemplo a continuación:__get__ y __call__ en Python
class Celsius(object):
def __init__(self, value=0.0):
self.value = float(value)
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
self.value = float(value)
def __call__(self):
print('__call__ called')
class Temperature(object):
celsius = Celsius()
def __init__(self):
self.celsius1 = Celsius()
T = Temperature()
print('T.celsius:', T.celsius)
print('T.celsius1:', T.celsius1)
output
T.celsius: 0.0
T.celsius1: <__main__.Celsius object at 0x023544F0>
me preguntan por qué tienen salida diferente. Sé que T.celsius
llamará al __get__
y T.celsius1
llame al __call__
.
Nada que lamentar, eso es una buena pregunta. – brice
Y entonces, usted mismo respondió su propia pregunta. – Denis
Muy buena pregunta. Tuve que verificar la documentación. Comportamiento bastante confuso, IMO. – codeape