![]()
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()