Python global list appending new elements
本问题已经有最佳答案,请猛点这里访问。
有人能帮我查一下python列表吗?我创建了一个全局变量和全局列表。更新了其他方法中的全局值。全局值更新得很好,但全局列表给了我一个错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Practice(object): foo = [] var = 0; def __updateVaribale(self): global var var = 9; def __updateList(self): global foo foo.append("updateList 1") def main(self): self.__updateVaribale(); global var print(var) self.__updateList() global foo print(foo) Obj = Practice(); Obj.main(); |
输出
1 2 3 4 5 6 7 8 9 | 9 Traceback (most recent call last): File"Python Test\src\Practice.py", line 31, in <module> Obj.main(); File"Python Test\src\Practice.py", line 26, in main self.__updateList() File"Python Test\src\Practice.py", line 18, in __updateList foo.append("updateList 1") NameError: name 'foo' is not defined |
您已经创建了一个类,因此该类的变量需要有自前缀,以便在实例化"obj"对象时,其变量和方法属于它(引用绑定对象)。
除了向每个变量(属性)添加self之外,还需要向类中添加一个构造函数。
见下文:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Practice(): def __init__(self): self.foo = [] self.var = 0; def __updateVaribale(self): self.var = 9; def __updateList(self): self.foo.append("updateList 1") def main(self): self.__updateVaribale(); print(self.var) self.__updateList() print(self.foo) Obj = Practice() Obj.main() |