小编Arc*_*oam的帖子

使用元类"__init__"与"__new__"动态添加方法

继续这个问题的讨论:动态添加有或没有元类的方法,在进行动态注入时,在__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)

python metaclass dynamic

5
推荐指数
1
解决办法
2661
查看次数

标签 统计

dynamic ×1

metaclass ×1

python ×1