Python TypeError:\uuuu init\u子类\uuuuu()不接受关键字参数
我正在尝试创建一个元类,但当我将它分配给另一个类时,我收到了错误Python TypeError:\uuuu init\u子类\uuuuu()不接受关键字参数,python,metaclass,Python,Metaclass,我正在尝试创建一个元类,但当我将它分配给另一个类时,我收到了错误TypeError:\uuuu init\u subclass\uuuu()不接受关键字参数,但我没有实现任何\uuuu init\u subclass\uuuu。为什么要调用此函数 类元(类型): 定义新定义(cls、名称、基础、dct): return super()。\uuuu new\uuuuu(cls、名称、基数、dct) 类MyClass(元=元): 通过 将meta更改为metaclass。传递给类签名的任何关键字参
TypeError:\uuuu init\u subclass\uuuu()不接受关键字参数
,但我没有实现任何\uuuu init\u subclass\uuuu
。为什么要调用此函数
类元(类型):
定义新定义(cls、名称、基础、dct):
return super()。\uuuu new\uuuuu(cls、名称、基数、dct)
类MyClass(元=元):
通过
将meta
更改为metaclass
。传递给类签名的任何关键字参数都会传递给其父类的\uuuu init\u subclass\uuu
方法。由于您输入了meta
而不是metaclass
,此meta
kwarg将传递给其父对象(对象
)\uuuu init\u子类\uuuu
方法:
对象。初始化子类(meta=5)
TypeError:\uuuu init\u子类\uuuuu()不接受关键字参数
如果您实际实现了\uuuuu init\u子类但输入了一个打字错误,则会出现类似的错误:
类父级:
def _init_子类(cls,handler=None):
super()。\uuuu init\u子类
cls.handler=handler
类CorrectChild(父级,处理程序=5):
通过
类TypoChild(父类,句柄=5):
#TypeError:\uuuu init\u子类\uuuuuu()获得意外的关键字参数“handle”
通过
回答不错-只有一个更正:被调用的默认\uuuu init\u subclass\uuuu
是对象。\uuuuu init\u subclass\uuuu
,而不是类型。\uuuuu init\u subclass\uuuu
:此方法在超类中调用,而不是在元类上。此外,在方法内部调用super()。\uuuu init\u subclass\uuuu
也是一种很好的做法,这样您的基类是可组合的。