class 属性写法一

class B(object):
    b = []

    def add(self, i):
        self.b.append(i)

class 属性写法二

class B(object):
    def __init__(self):
        self.b = []

    def add(self, i):
        self.b.append(i)

问题

第一种 class 写法,在类的多次实例化时,属性 b 的地址不会变,第二种 class 写法则会改变。因此定义和使用类属性的时候,需要注意该问题,按需求定义类的属性。
image

官方解释

__init__ 创建的属性,会被所有实例化对象共享。
image