zybzick
@zybzick

Поля класса в Python перезаписываются?

Немного не понимаю как работают классы в Python
class SimpleClass:
    my_dict = {}
    number = None

    def return_res(self):
        return self.my_dict

    def __init__(self, args):
        self.number = args
        self.my_method()

    def my_method(self):
        value = self.number+10
        self.my_dict.update({'key': value})


one = SimpleClass(1).return_res()
two = SimpleClass(2).return_res()
three = SimpleClass(3).return_res()
result = [one, two, three]
print(result)


Почему результат будет таким ?
[{'key': 13}, {'key': 13}, {'key': 13}]
Как получить результат такой ?
[{'key': 11}, {'key': 12}, {'key': 13}]
  • Вопрос задан
  • 532 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вы модифицируете поле класса, а не его экземпляра. Исправить можно убрав объявление поля на уровне класса
class SimpleClass:
    def __init__(self, args):
        self.number = args
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы