python class(1)

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()

 

posted @ 2018-05-02 10:40  我是外婆  阅读(133)  评论(0编辑  收藏  举报