4

当我尝试执行下面的代码时, 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)
4

2 回答 2

8

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

说你的问题的答案是:

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)
于 2013-08-08T16:18:12.310 回答
4

在函数内部使用 global 关键字

于 2013-08-08T16:22:39.760 回答