2015-04-03 2 views
0

У меня есть планеты классов, которые хранятся в словаре Key, который является именем планеты, и значением, которое является размером планеты, а затем добавьте все значения в словаре и распечатайте егоДобавление значений словаря из класса

это мой класс

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' 

Как исправить эту проблему?

+0

'aDict [self.name] = self.mass' потерпит неудачу, поскольку нет полей имени и массы. – Basilevs

+0

Возможный дубликат [Pygame TypeError: отсутствует 1 обязательный позиционный аргумент:] (http://stackoverflow.com/questions/19034714/pygame-typeerror-missing-1-required-positional-argument) – Basilevs

ответ

3

planets - класс, def store(self, name, mass): - метод экземпляра. Сначала нужно создать экземпляр planets, чтобы использовать его методы экземпляра.

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

Вторая проблема, вы должны использовать mass для обозначения параметра mass не self.mess. self.mess - свойство объекта планет. И вам необходимо инициализировать свойство aDict в методе __init__. Таким образом, вы можете определить класс, используя приведенные ниже коды.

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

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

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

Вы правы, но я все еще получая ошибку, которая: Объект AttributeError: 'planet не имеет атрибута' mass '" – Mozein

+0

Ошибка на самом деле звучит как вызов метода экземпляра без экземпляра. Python считал бы «Солнце» самосознанием, 50 - именем и жалуется на отсутствие последнего (массового) аргумента. – vladris

+0

@Mozein: Se мой комментарий к вопросу. Вы ссылаетесь на отсутствующие поля в методе store(). Вместо этого используйте аргументы метода. Удалите «я». – Basilevs

Смежные вопросы