这是一段代码片段。
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值已经被初始化。通过在每一行上放置断点来调试这个问题并没有帮助我理解这是如何发生的。
![enter image description here](https://istack.dev59.com/VaA99.webp)
TestClass
实例的b
属性时被调用,但看起来IDE正在后台为调试器输出执行此操作。 - jonrsharpeb
中的代码才会运行。例如,如果b
引发异常,则在特定访问test_obj.b
之前,您的代码将正常运行。 - 101