我是python OOP的新手。我有3个类,其中一个从另一个作为参数实例被调用:
class Characters:
def __init__(self, b="", c = ""):
self.b= b
self.c= c
class Words:
def __init__(self, charss=Characters()):
self.charss= charss
class Sentences:
def __init__(self, w=Words()):
self.w = w
然后,我从另一个类创建Word类的新实例,并用json文件中的数据填充它。
s = Sentences()
s.__dict__ = json.loads(output.content)
调试时,我可以看到
s
已正确填充。然后,我尝试打印出s
的值,如下所示:print(s.w[0].charss[0])
发生错误:
AttributeError: 'dict' object has no attribute 'charss'
是因为我从
JSON
填充为__dict__
,其中charss
实例化为list
。如果是这样,从__dict__
输入更改json
或将对象实例化为__dict__
的最佳解决方案是什么? 最佳答案
问题是正在访问实例s
进行打印的方式。我将json输出保存为字典,但默认情况下,类的实例为列表。因此,代替
print(s.w[0].charss[0])
那条线应该是
print(s.w[0]["charss"][0])
关于python - AttributeError:'dict'对象没有属性'charss',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49449408/