【发布时间】:2013-08-08 16:14:19
【问题描述】:
当我尝试执行下面的代码时,第一个列表被修改,而第二个列表没有发生任何变化。有没有办法用全新的列表替换外部列表,或者调用列表方法是我被允许从内部类方法做的唯一事情?我尝试在赋值操作之前添加全局关键字,但它会产生语法错误。
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)
【问题讨论】:
-
问题在于,当您像对 second_list 那样使用赋值运算符时,解释器假定您正在尝试将属性添加到本地函数的命名空间 - 这是本地函数的命名空间之前出现的结果解释器查找顺序中的全局命名空间。
标签: python class methods global