你漏了一行代码,这个方法是
def _add_class_type(cls, type, inits, proxied):
def setter(self, xcls):
setattr(self, type + '_class', xcls)
for m in inits:
self.mdic[m] = xcls
for m in proxied:
if hasattr(xcls, m):
self.mdic[m] = self.proxyclass(m)
setattr(cls, 'set_' + type + '_class', setter)
这个方法简单来说,就是把基础类和其他类的方法映射为本对象的方法,类似一个FACADE。