AttributeError: у объекта 'int' нет атрибута 'save1' - PullRequest
0 голосов
/ 14 апреля 2020
nice = 2

class saving(object):
    def __init__(self,save1, save2, save3, save4, save5, save6, save7, save8, save9, save10):
        self.save1 = save1
        self.save2 = save2
        self.save3 = save3
        self.save4 = save4
        self.save5 = save5
        self.save6 = save6
        self.save7 = save7
        self.save8 = save8
        self.save9 = save9
        self.save10 = save10
        self.writesaves = open('Saves.txt', 'w')
    def save(self):
        data1 = self.save1
        print(data1)


test = saving(nice, 'xp', 'gems', '.', '.', '.', '.', '.', '.', '.')
saving.save(1)

Ошибка:

Traceback (most recent call last):
  File 'file', line 22, in <module>
    saving.save(1)
  File "file", line 17, in save
    data1 = self.save1
AttributeError: 'int' object has no attribute 'save1'

1 Ответ

0 голосов
/ 14 апреля 2020

В вашем коде у вас есть:

test = saving(nice, 'xp', 'gems', '.', '.', '.', '.', '.', '.', '.')
saving.save(1)

Где saving - ваш класс, а test - экземпляр этого класса.

Когда вы звоните:

saving.save(1)

Вы вызываете метод save в классе saving и передаете его 1. Таким образом, вместо self, относящегося к объекту, он просто содержит целое число 1, поэтому self.save1 вызывает AttributeError: 'int' object has no attribute 'save1'

Ваше исправление заключается в том, что вы должны вместо этого вызывать test.save() , чтобы вызвать метод save для объекта test.

Кроме того, вместо того, чтобы ссылаться на 10 отдельных savex объектов, вам было бы гораздо лучше использовать структуру данных, такую ​​как список из 10 значений, и обращаться к ним через индекс.

Кроме того, наличие класса, метода и переменных, называемых сохранением, сохранением и сохранением x , может стать источником некоторой путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...