use*_*612 4 python methods global class
当我尝试执行下面的代码时,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)
Run Code Online (Sandbox Code Playgroud)
第一:拥有可变状态的全局变量几乎绝不是一个好主意.您应该将模块级变量用作常量或单例.如果要更改变量的值,则应将其作为参数传递给函数,然后从函数返回新值.
说你的问题的答案是:
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)
Run Code Online (Sandbox Code Playgroud)
要么:
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)
Run Code Online (Sandbox Code Playgroud)