Skip to main content
 首页 » 编程设计

python之仅在通过点运算符访问时字典 AttributeError

2025年05月04日15lvdongjie

所以我正在创建一个这样的字典:

request = {"method": "get"} 

当我尝试用

列出属性时
print list(request.keys()) 

我得到了我所期望的:

['method'] 

而且我可以访问 method 属性

print request['method'] 

我得到了我所期望的:

get 

但如果我尝试

print request.method 

我得到一个错误

AttributeError: 'dict' object has no attribute 'method'

为什么我在使用 . 时会出错,但在使用方括号时却不会?

请您参考如下方法:

这两个操作转化为不同的方法调用:

Python 中的字典 API 通过“支持下标的接口(interface)”工作。也就是说,它的项应该通过 get 方法或通过 [] 索引访问。

一个有效而另一个失败的原因是操作不等同。只有 get 和 [] 起作用的原因是 python 中的实现。

通过覆盖 __getattr__ 可以很容易地模拟成员访问:

class AttrDict(dict): 
    def __getattr__(self, name): 
        return self[name] 
 
request = AttrDict({'method': 'get'}) 
method = request.method  # 'get'