当我尝试执行下面的代码时,first_list会被修改,而第二个代码不会发生任何变化。有没有办法用一个全新的列表替换外部列表,或者调用list方法是我唯一可以从类方法中做的事情?我尝试在赋值操作之前添加global关键字,但它会产生语法错误。
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)
答案 0 :(得分:6)
首先:拥有可变状态的全局变量几乎是 NEVER 一个好主意。您应该将模块级变量用作常量或单例。如果要更改变量的值,则应将其作为参数传递给函数,然后从函数返回新值。
说你问题的答案是:
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)
答案 1 :(得分:2)
在函数
中使用global关键字