附加新元素的python全局列表

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()