继续这个问题的讨论:动态添加有或没有元类的方法,在进行动态注入时,在__new__方法和__init__方法中做这个的区别和好处/问题是什么?
在引用的问题中,通过使用添加新方法setattr.如果在__new__方法中执行此操作,则需要修改dict参数.使用相同的示例,它将是这样的:
class Meta(type)
def __new__(cls, clsname, bases, dct):
def my_method(self, x):
return x in self.letters
dct[my_method.__name__] = my_method
return super(Meta, cls).__new__(cls, clsname, bases, dct)
Run Code Online (Sandbox Code Playgroud)