先看一下下面代码:
class demo:
l = []
o1 = demo()
o1.l.append ("Hello")
o2 = demo()
o2.l.append ("World!")
print("list in o1: ", o1.l)
print("list in o2: ", o2.l)
你以为它会打印出什么?
我们来看看实际情况:

很显然,这不是我们想要的结果,那么如何解决呢?
问题的原因
我们把这两个对象的中 L 的id打印出来看看:


看到没, 简直完全特么一模一样, 这是因为我们在定义L的时候, 把这个L定义到了这个类所有成员的公共池中,具体我也不知道怎么表达, 但是你能理解就好。
解决方法:
很简单, 只需要在实例化的时候分配一个新的对象给L就好了:
class demo:
l:list
def __init__(self) -> None:
self.l = []