Python 从类添加字典值

Python 从类添加字典值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个行星类,它存储在一个字典键中,该键是行星的名称,值是行星的大小,然后将字典中的所有值相加并打印出来 这是我的课 class planets: def store(self, name, mass): aDict[self.name] = self.mass def add(self): return sum(aDict.values()) planets.store("Sun",50) planets.store("Mercury

我有一个行星类,它存储在一个字典键中,该键是行星的名称,值是行星的大小,然后将字典中的所有值相加并打印出来

这是我的课

 class planets:
    def store(self, name, mass):
        aDict[self.name] = self.mass

    def add(self):
        return sum(aDict.values())


planets.store("Sun",50)

planets.store("Mercury",7)

print(planets.add())
我希望得到57的答案,但我得到的错误是:

TypeError: store() missing 1 required positional argument: 'mass'

如何解决这个问题

行星是一个类,
defstore(self,name,mass):
是一个实例方法。您需要先创建一个
行星的实例
才能使用它的实例方法

p = planets()
p.store("Sun",50)
p.store("Mercury",7)
print(p.add())
第二个问题,您必须使用
mass
来引用参数
mass
而不是
self.mess
<代码>自我。mess是行星对象的属性。并且,您需要在
\uuuu init\uuuu
方法中初始化
aDict
属性。因此,您可以使用以下代码定义类

class planets:
    def __init__(self):
        self.aDict = {}

    def store(self, name, mass):
        self.aDict[name] = mass

    def add(self):
        return sum(self.aDict.values())

planets
是一个类,
defstore(self、name、mass):
是一个实例方法。您需要先创建一个
行星的实例
才能使用它的实例方法

p = planets()
p.store("Sun",50)
p.store("Mercury",7)
print(p.add())
第二个问题,您必须使用
mass
来引用参数
mass
而不是
self.mess
<代码>自我。mess是行星对象的属性。并且,您需要在
\uuuu init\uuuu
方法中初始化
aDict
属性。因此,您可以使用以下代码定义类

class planets:
    def __init__(self):
        self.aDict = {}

    def store(self, name, mass):
        self.aDict[name] = mass

    def add(self):
        return sum(self.aDict.values())

planets
是一个类,
defstore(self、name、mass):
是一个实例方法。您需要先创建一个
行星的实例
才能使用它的实例方法

p = planets()
p.store("Sun",50)
p.store("Mercury",7)
print(p.add())
第二个问题,您必须使用
mass
来引用参数
mass
而不是
self.mess
<代码>自我。mess是行星对象的属性。并且,您需要在
\uuuu init\uuuu
方法中初始化
aDict
属性。因此,您可以使用以下代码定义类

class planets:
    def __init__(self):
        self.aDict = {}

    def store(self, name, mass):
        self.aDict[name] = mass

    def add(self):
        return sum(self.aDict.values())

planets
是一个类,
defstore(self、name、mass):
是一个实例方法。您需要先创建一个
行星的实例
才能使用它的实例方法

p = planets()
p.store("Sun",50)
p.store("Mercury",7)
print(p.add())
第二个问题,您必须使用
mass
来引用参数
mass
而不是
self.mess
<代码>自我。mess是行星对象的属性。并且,您需要在
\uuuu init\uuuu
方法中初始化
aDict
属性。因此,您可以使用以下代码定义类

class planets:
    def __init__(self):
        self.aDict = {}

    def store(self, name, mass):
        self.aDict[name] = mass

    def add(self):
        return sum(self.aDict.values())

aDict[self.name]=self.mass
将失败,因为没有名称和质量字段。可能重复的
aDict[self.name]=self.mass
将失败,因为没有名称和质量字段。可能重复的
aDict[self.name]=self.mass
将失败,因为没有名称和质量字段。可能重复的
aDict因为没有名字和质量字段,质量会失败。可能你的副本是正确的,但是我仍然会得到错误:“AtditError:”行星对象没有属性“质量”。这个错误听起来像是调用一个没有实例的实例方法。Python会考虑“Sun”。作为self,50作为name,并抱怨缺少最后一个(mass)参数。@Mozein:Se我对问题的评论。您引用的是store()方法中缺少的字段。请改用方法参数。删除“self”。您是对的,但我仍然得到错误:“AttributeError:‘planets’对象没有属性‘mass’”这个错误听起来像是调用一个没有实例的实例方法。Python会考虑“Sun”是自的,50是名称,并抱怨缺少最后一个(质量)参数。@莫泽林:我对问题的评论。您引用了存储()方法中的缺省字段。你是对的,但是我仍然有错误:“属性错误:”行星的对象没有属性“质量”,这个错误听起来像是调用一个没有实例的实例方法。Python会把“Sun”看作是“自我”,50个是“名字”,并抱怨错过了最后一个(质量)。参数。@Mozein:Se我对问题的评论。您引用的是store()方法中缺少的字段。请改用方法参数。删除“self”。您是对的,但我仍然得到错误:“AttributeError:‘planets’对象没有属性‘mass’”这个错误听起来像是调用一个没有实例的实例方法。Python会考虑“Sun”是自的,50是名称,并抱怨缺少最后一个(质量)参数。@莫泽林:我对问题的评论。您引用了存储()方法中的缺省字段。