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

时间:2013-08-08 16:14:19

标签: python class methods global

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

2 个答案:

答案 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关键字
相关问题