python nonetype_索引到dict时,Python NoneType不可调用

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

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 "", line 1, in

TypeError: 'NoneType' object is not callable

我明白这应该是一个错误.我不明白为什么它说’NoneType’对象不可调用.据我所知,我没有在导致错误的行中调用任何内容.

我预计错误会更像这样:

>>> b[b]

Traceback (most recent call last):

File "", line 1, in

TypeError: unhashable type: 'dict'

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

解决方法:

看看@Wooble建议的UserDict实现,我看到了这个:

__hash__ = None # Avoid Py3k warning

因此问题是因为UserDict的实现.

如果你真的需要使用你自己的字典类型,我建议直接从dict子类化并实现你自己的__hash__方法,或者,在例如freezeset的帮助下将字典转换为可哈希的对象:

>>> a = UserDict.UserDict()

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

标签:python,typeerror

来源: https://codeday.me/bug/20190626/1292204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值