Продолжая обсуждение с этого вопроса: Dynamically adding methods with or without metaclass, при выполнении динамического injetion, какова разница и преимущества/Вопр делать это в методе __new__
против метода __init__
?методы Динамически добавляющие с метаклассом «__init__» против «__new__»
В указанном вопросе новый метод добавляется с помощью 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)