这是一段代码。
class TestClass:
def __init__(self):
self.a = "a"
print("calling init")
@property
def b(self):
b = "b"
print("in property")
return b
test_obj = TestClass()
print("a = {} b = {}".format(test_obj.a,test_obj.b))
我试图理解何时在test_obj中定义的变量 b 获得其值“ b”。
从下面的屏幕快照中可以看到,第13行上的语句尚待评估/执行,但是test_obj的 b 值已经初始化。通过在几乎每一行上都放置一个断点来调试它并不能帮助我理解这是怎么发生的。
答案 0 :(得分:1)
IDE更有可能向您显示test_obj.b
的值。为此,它从test_obj.b
获取值。由于b
是属性还是@property
并没有多大区别,因此调试器实际上只是为您执行test_obj.b
,这为它提供了值'b'
函数def b
的工作原理与您期望的其他普通函数完全相同;只是调试器/ IDE为您隐式调用了它。