>>{'content': '', 'type': ''-6ren">
gpt4 book ai didi

Python setattr() 找不到明显存在的属性

转载 作者:行者123 更新时间:2023-12-04 14:30:53 28 4
gpt4 key购买 nike

我不知所措。
找不到任何其他有助于解决此问题的内容。

dta = {'type': "", 'content': ""}
print dta

>>>{'content': '', 'type': ''}


setattr(dta, 'type', "Steve")

>>>AttributeError: 'dict' object has no attribute 'type'

最佳答案

Python 的字典不是 JS 对象。当你创建一个 dict 时,你并不是在创建一个动态对象,你可以像在 JS 中那样在运行时更改其属性。相反,字典知道如何存储键和值对,并通过覆盖运算符 [] ( def __getitem__(self, key) ) 来实现。

在更多的实现层面 - 调用 getattr/setattr真的是 data.__getattr__("foo") 的简写自 dict用途 __getitem__而不是 __getattr__函数调用失败。

因此,无法使用通用属性函数设置(或获取)dict 的项目。

但是,您可以创建支持该操作的自定义 dict 类(尽管我不推荐它):

class AttrDict(dict):
def __init__(self):
dict.__init__(self)

# Override getattr and setattr so that they return the values of getitem / setitem
def __setattr__(self, name, value):
self[name] = value

def __getattr__(self, name):
return self[name]

data = AttrDict()
data["foo"] = "bar"
print(getattr(data, "foo"))

关于Python setattr() 找不到明显存在的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534519/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com