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是名称,并抱怨缺少最后一个(质量)参数。@莫泽林:我对问题的评论。您引用了存储()方法中的缺省字段。