小编cod*_*est的帖子

关于python中__get__和__call__的困惑

请参阅下面的简单示例:

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>
Run Code Online (Sandbox Code Playgroud)

我想知道为什么他们有不同的输出.我知道T.celsius会打电话给__get__并T.celsius1致电__call__.

python

11
推荐指数
2
解决办法
1684
查看次数

标签 统计

python ×1