美文网首页
python 父类实例化子类,替换__init__方法(记录)

python 父类实例化子类,替换__init__方法(记录)

作者: 夏树的宝马 | 来源:发表于2018-09-06 10:57 被阅读30次

    阅读 tornado的时候发现,tornado的AsyncHTTPClient的初始化,是没有调用init方法,而是调用了自己写的一个方法,一直不明白原因。
    tornado Asynchttpclient 实例过程 AsyncHTTPClient--->Configurable--->SimpleAsyncHTTPClient 进行一个实例

    说明:在new方法中返回了对象实例时,再调用已经写好的对象实例方法进行对属性进行初始化、赋值等操作,最后把初始化完成后的对象返回既可实现,不用调用init方法进行初始化

    1. 必须返回初始化完成的对象,否则会报错
    2. 初始化方法必须指向对象实例(self)
    class asd():
        def __new__(cls, *args, **kwargs):
            r=super().__new__(cls)
            print('asd 的 new ')
            r.initliz(*args,**kwargs)
            return r  #必须返回否则会报错
    
    class bnm(asd):
        def initliz(self): # 必须指向对象实例
            print('bnm 的 initlize')
    
        def kj(self,name):
            print('kj')
            self.xx=name
            print(self.xx)
    
    class foo(bnm):
        def initliz(self,name=None):
            self.name=name
            print(' foo is running')
    
    r=bnm()
    r.kj('注册')
    r2=foo(name='小明')
    

    参考

    相关文章

      网友评论

          本文标题:python 父类实例化子类,替换__init__方法(记录)

          本文链接:https://www.haomeiwen.com/subject/tqwtgftx.html