Python全局列表附加新元素

时间:2015-06-28 06:55:01

标签: python list python-3.x

有人可以帮我解决python列表问题。我创建了一个全局变量和全局列表。其他方法更新了全局值。全球价值更新很好,但全球清单给了我一个错误。

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

输出

 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

1 个答案:

答案 0 :(得分:2)

您已经创建了一个类,因此该类的变量需要具有self前缀,以便在实例化'Obj'对象时,其变量和方法属于它(引用绑定对象)。

除了为每个变量(属性)添加self之外,还需要在类中添加构造函数。

见下文:

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