Как избежать совместного использования данных классов между экземплярами?

Аналогия: Если Вы создаете автомобили для жизни (программирование), то его очень подходящее, чтобы знать, как механизм работает (Win32).

131
задан vaultah 31 March 2018 в 15:22
поделиться

3 ответа

Вам нужно следующее:

class a:
    def __init__(self):
        self.list = []

Объявление переменных внутри объявления класса делает их членами "класса", а не членами экземпляра. Объявление их внутри метода __ init __ гарантирует, что новый экземпляр членов создается вместе с каждым новым экземпляром объекта, что и является поведением, которое вы ищете.

133
ответ дан 24 November 2019 в 00:19
поделиться

Вы объявили «список» как «свойство уровня класса», а не « свойство уровня экземпляра ". Чтобы свойства ограничивались на уровне экземпляра, вам необходимо инициализировать их, ссылаясь на параметр «self» в методе __ init __ (или где-либо еще в зависимости от ситуации).

Вы этого не делаете. строго необходимо инициализировать свойства экземпляра в методе __ init __ , но это упрощает понимание.

11
ответ дан 24 November 2019 в 00:19
поделиться

Да, вы должны объявить в «конструкторе», если хотите, чтобы список стал свойством объекта, а не свойством класса.

3
ответ дан 24 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: