【问题标题】:Why weakref doesn't support built-in types in Python?为什么 weakref 不支持 Python 中的内置类型?
【发布时间】:2011-10-10 10:09:40
【问题描述】:

在 Python 弱引用文档(http://docs.python.org/library/weakref.html)中,它说

list、dict等几种内置类型不直接支持 弱引用,但可以通过子类化添加支持

我认为为大字典创建弱引用在某些实际情况下可能很有用。我想知道该实施背后的原因是什么?

【问题讨论】:

    标签: python weak-references


    【解决方案1】:

    大多数内置类型不是直接可弱引用的(例如 str、int、float、list、dict、None),还有一些甚至不能通过子类来实现(例如 CPython 中的元组)。

    关于几个内置类型的weakrefs底层实现的一些细节可以在this March-2005 python-list post by Raymond Hettinger中找到。

    【讨论】:

    • 谢谢。现在我可以看到 tuple 和 str 不能被弱引用的原因了。 list 和 dict 怎么样?为什么我们必须对这些类型进行子类化来为它们创建弱引用?
    • 如果第二段中给出的提示还不够继续,那么恐怕我对python的内部了解不够多,无法进一步解释。也许你最好在python-dev list 上问这种问题。我相信其中一位 python 开发人员能够为您的问题提供明确的答案。
    【解决方案2】:

    我有根据的猜测是,dicts 和列表在内部用于实现weakrefs,所以在这里你会遇到鸡蛋鸡的情况。

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      相关资源
      最近更新 更多