阅读 tornado的时候发现,tornado的AsyncHTTPClient的初始化,是没有调用init方法,而是调用了自己写的一个方法,一直不明白原因。
tornado Asynchttpclient 实例过程 AsyncHTTPClient--->Configurable--->SimpleAsyncHTTPClient 进行一个实例
说明:在new方法中返回了对象实例时,再调用已经写好的对象实例方法进行对属性进行初始化、赋值等操作,最后把初始化完成后的对象返回既可实现,不用调用init方法进行初始化
- 必须返回初始化完成的对象,否则会报错
- 初始化方法必须指向对象实例(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='小明')
网友评论