6,230
社区成员




class Test:
def __init__(self):
self.__cat__ = {'state':'alive'}
@property
def cat(self):
return self.__cat__
@property
def schrodinger(self):
self.cat['state'] = 'dead'
return True
test = Test()
if 'state' in test.cat:
pass
在13行下断点,将鼠标移至test.cat中的cat中时,显示内容为:
但如果将鼠标移至test.cat中的test中显示内容确为:
这时候你再看test.cat中的cat值也跟着改变了,只要不去看test中的值就一直是alive只要看一眼后值就会改变为dead,面是在schrodinger属性中下的断点又没有执行,不明白是什么样的机制会导致在调试时的观察会改变属性值的呢?
找到原因了,在调时的时候,去查看test值时,虽然schrodinger里的断点没进入,但是确实是调用了的,因为调试器会去取test下所有属性的值,调试器自己的调用,不会触发断点