-9
class idDict(dict):
    def __getattr__(self,key):
        return 'dsaads'
d=idDict()
print d['ss']

我只是得到一个错误:KeyError: 'ss'。根据一些在线论坛,这应该有效。我想打印出“dsaads”

这也不起作用;我犯了同样的错误:

from collections import defaultdict
class idDict(defaultdict):
    def __getattr__(self,key):
        return 'dsaads'
d=idDict()
print d['ss']
4

2 回答 2

9

__getattr__()用于属性,而不是索引。但是dict已经支持索引,并且您对该键没有任何价值。也许你正在寻找collections.defaultdict

于 2012-09-09T18:08:48.530 回答
2

使用__getitem__

>>> class idDict(dict):
    def __getitem__(self,key):
        return 'dsaads'

>>> d=idDict()
>>> d['a']
'dsaads'

>>> help(dict.__getitem__)

Help on method_descriptor:

__getitem__(...)
    x.__getitem__(y) <==> x[y]
于 2012-09-09T18:11:11.617 回答