Python全局列表追加新元素
Python全局列表追加新元素
有人可以帮我解决一下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, inObj.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
在这段代码中,创建了一个名为Practice的类。由于创建了该类,类的变量需要加上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()
为什么我需要在类中添加构造函数?就像Java一样,Python不会自动处理这个问题,通过添加一个默认构造函数来解决吗?
如果没有构造函数,类将没有初始化程序,而且在创建类的新实例时不会自动调用。在构造函数内,新创建的对象被分配给参数self。如果没有构造函数,那么你从类创建的任何对象都无法传递到类中,因此对象的数据将无法绑定到对象上。