从类内部方法更改全局变量

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)

Vik*_*kez 6

第一:拥有可变状态的全局变量几乎绝不是一个好主意.您应该将模块级变量用作常量或单例.如果要更改变量的值,则应将其作为参数传递给函数,然后从函数返回新值.

说你的问题的答案是:

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)