我是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/

10-11 23:07