我是个Python新手,所以...我有这样的代码:
def main():
Obj1 = classA()
Obj1.set_p1()
Obj2 = classA()
Obj1.del_p1()
Obj3 = classA()
classA.list.append(9)
print(Obj1.list, Obj2.list, Obj3.list, classA.list)
class classA():
list = []
def set_p1(self):
self.list.append(6)
def del_p1(self):
self.list = []
if __name__ == '__main__':
main()
我有这个:([],6,9,6,9,6,6,9,6,9)
所以我不明白:为什么Obj1.set_p1()
改变了classA.list
,但是Obj1.del_p1()
并没有做同样的事情。为什么classA.list.append(9)
没有对Obj1.list
做任何事情
发布于 2018-07-02 05:03:13
将self.list
设置为空列表只会在Obj1上创建一个新的实例属性,该属性会隐藏具有相同名称的类属性。
要清除类级列表,需要通过类:self.__class__.list = []
访问它。
然而,这两个方法实际上都应该是类方法,因为它们根本不访问实例。
https://stackoverflow.com/questions/51126987
复制相似问题