-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 に答える