class Test: _parent1 = 'variable parent' #父类成员变量首先被初始化 print(_parent1) _son_son = 'search parent' def __init__(self): print(self) #实际对应的实例化对象这里为 Test2 的实例 print('parent') print(self._son) #调用子类变量 print(self._son_son) #从下往上搜索, 子类没有则调用父类 def test(self): print('i`m parent test') #同样的根据实际实例来确定被调用方法, 如果子类不存在则去寻找父类 # 还有要注意的地方,不过python 内置方法也是这样的 例如__init__ 子类如果没有定义则自动 # 调用父类,如果子类声明,则需要手动进行父类初始化 # 如果在子类重写一写特殊方法,则需要自己去实现具体的过程,比如__setattr__ 当有属性被添加,这个方法会被自动调用 # 如果重写则需要实现具体的__dict__ 添加过程,同样的__dict__不会自动管理属性 # 如果没有将这些方法进行重写,则会调用父类的特殊方法(默认为Object),从而可以实现一些设计模式 class Test2(Test): _son = 'variable son' #类成员首先被初始化 _son_son = '_son_son' print(_son) def test(self): print('i`m son test') t = Test2()