Изменение глобальных переменных внутри метода класса
Когда я пытаюсь выполнить приведенный ниже код, first_list изменяется, в то время как во втором списке изменений не происходит. Есть ли способ заменить внешний список совершенно новым списком, или вызов методов списка-это единственное, что мне разрешено делать из методов внутреннего класса? Я попытался добавить глобальное ключевое слово перед операцией присваивания, но это приводит к синтаксической ошибке.
first_list = []
second_list = []
class MyClass:
def change_values(self):
first_list.append('cat')
second_list = ['cat']
test = MyClass()
test.change_values()
print(first_list)
print(second_list)
2 ответа:
Во-первых: это почтиНикогда хорошая идея иметь глобальные переменные с изменяемым состоянием. Переменные уровня модуля следует использовать в качестве констант или синглетов. Если вы хотите изменить значение переменной, вы должны передать его в качестве параметра функции, а затем вернуть новое значение из функции.
Сказал, что ответ на ваш вопрос будет либо:
first_list = [] second_list = [] class MyClass: def change_values(self): first_list.append('cat') second_list[:] = ['cat'] test = MyClass() test.change_values() print(first_list) print(second_list)
Или:
first_list = [] second_list = [] class MyClass: def change_values(self): first_list.append('cat') global second_list second_list = ['cat'] test = MyClass() test.change_values() print(first_list) print(second_list)