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)
这个嵌套函数setter的用意何在?
你漏了一行代码,这个方法是
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。