gpt4 book ai didi

Python NoneType 在索引到 dict 时不可调用

转载 作者:太空狗 更新时间:2023-10-30 03:06:14 28 4
gpt4 key购买 nike

我遇到了这个我无法解释的奇怪错误。

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import UserDict
>>> a = UserDict.UserDict()
>>> b = {}
>>> b[a]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

我明白这应该是一个错误。我不明白为什么它说 'NoneType' object is not callable。据我所知,我没有在导致错误的行中调用任何内容。

我预计错误会更像这样:

>>> b[b]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

有人可以在我发疯之前向我解释一下吗?

最佳答案

按照@Wooble 的建议查看 UserDict 实现,我看到了:

__hash__ = None # Avoid Py3k warning

因此问题确实是因为UserDict的实现。

如果你真的需要使用你自己的字典类型,我建议直接从 dict 子类化并实现你自己的 __hash__ 方法,或者,将字典转换成一个借助于例如 frozenset 的可散列对象:

>>> a = UserDict.UserDict()
>>> b[frozenset(a.items())]

关于Python NoneType 在索引到 dict 时不可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9078681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com