Python中遇到的“薛定谔的猫”灵异事件,这是个什么原理?

tony_zn 2024-07-23 10:19:04
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属性中下的断点又没有执行,不明白是什么样的机制会导致在调试时的观察会改变属性值的呢?

...全文
81 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony_zn 07-23
  • 打赏
  • 举报
回复

找到原因了,在调时的时候,去查看test值时,虽然schrodinger里的断点没进入,但是确实是调用了的,因为调试器会去取test下所有属性的值,调试器自己的调用,不会触发断点

5,907

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用python
社区管理员
  • Python 学习者
  • 嗨学编程
  • 松鼠爱吃饼干
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎来到Python学习者们的社区,

 

本社区分享你需要的文章、问题解答、技术互助、学习资源、面试系列等等

 

欢迎你的加入,祝你学有所成~

试试用AI创作助手写篇文章吧