【问题标题】:Using getattr with Dictionary [closed]将 getattr 与字典一起使用 [关闭]
【发布时间】:2012-09-02 17:20:35
【问题描述】:
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']

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

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

    【讨论】:

      【解决方案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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-02
        • 2014-01-26
        • 1970-01-01
        相关资源
        最近更新 更多