Dhi*_*mar 5 python properties python-internals
这是一段代码。
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))
Run Code Online (Sandbox Code Playgroud)
我想了解当变量b内test_obj定义获取其“b”的值。
从下面的屏幕截图中可以看出,第 13 行的语句尚未计算/执行,但test_obj的b值已经初始化。通过在每一行上放置一个断点来调试它并没有帮助我理解这是如何发生的。
更有可能的是,IDE 正试图向您展示 的价值test_obj.b。为此,它从test_obj.b. 由于它b是属性还是 a并没有太大区别@property,调试器基本上只是test_obj.b为您做,这给了它 value 'b'。
该函数的def b工作方式与您对任何其他普通函数的期望完全相同;只是调试器/IDE 会为您隐式调用它。