【问题标题】:adding dictionary values from class从类中添加字典值
【发布时间】:2015-04-03 13:33:58
【问题描述】:

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

这是我的课

 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'

如何解决这个问题?

【问题讨论】:

标签: python python-3.x dictionary


【解决方案1】:

planets 是一个类,def store(self, name, mass): 是一个实例方法。你需要先创建一个planets 的实例才能使用它的实例方法。

p = planets()
p.store("Sun",50)
p.store("Mercury",7)
print(p.add())

第二个问题,你必须使用mass来引用参数mass而不是self.messself.mess 是行星对象的属性。而且,您需要在__init__ 方法中初始化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())

【讨论】:

  • 你是对的,但是我仍然收到错误消息:“AttributeError: 'planets' object has no attribute 'mass'”
  • 这个错误实际上听起来像是在没有实例的情况下调用实例方法。 Python 会认为“Sun”是 self,50 是 name,并抱怨缺少最后一个(质量)参数。
  • @Mozein:请看我对问题的评论。您在 store() 方法中引用了缺失的字段。请改用方法参数。删除“自我”。
猜你喜欢
  • 1970-01-01
  • 2018-01-24
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多