【问题标题】:Is it normal for all of an object's properties to be evaluated on every attribute access?在每次属性访问时评估对象的所有属性是否正常?
【发布时间】:2015-01-03 02:09:50
【问题描述】:

通过完全的意外和调试打印,我注意到每次访问我的对象的任何属性时,都会评估其所有属性。

这是标准 CPython 环境中的正常行为吗?

如果是这样,为什么,有什么方法可以阻止这种行为?

【问题讨论】:

  • 可以显示示例代码来演示这一点吗?您是在以交互方式运行代码,还是在任何类型的 IDE 中运行代码,这些 IDE 可能正在读取属性值以将它们显示在监视面板或类似的东西中?
  • @BrenBarn 哦,你知道吗,可能就是这样。
  • 我记得几个月前有人问过关于 Spyder IDE 的类似问题,但我现在找不到。
  • 不幸的是,我似乎无法通过 REPL 导入我的模块 - 即使从我的 IDE 的内置 REPL 中它工作得很好。呵呵。
  • 不,这不是正常行为,除非你的 IDE 很奇怪,否则它一定是关于你的覆盖 __getattribute__ 之类的。

标签: python python-3.x properties


【解决方案1】:

这很可能是因为您的代码是在带有集成调试器的 IDE 中运行的,该调试器会在访问对象时重新检查对象属性的值。 这不是 CPython 的正常行为。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 2023-03-05
    • 2012-11-03
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多