我是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、9])
所以我想得到这个:
为什么
Obj1.set_p1()
更改classA.list
,但Obj1.del_p1()
却没有这样做。
为什么classA.list.append(9)
对Obj1.list
不做任何事情?
答案 0 :(得分:0)
将self.list
设置为空列表只会在Obj1上创建一个新的 instance 属性,该属性会隐藏具有相同名称的class属性。
要清除类级别列表,您需要通过self.__class__.list = []
类访问它。
但是,实际上这两种方法都应该是类方法,因为它们根本不访问实例。