TypeError: __init_subclass__() takes no keyword arguments
TypeError: __init_subclass__() takes no keyword arguments
我正在尝试创建一个元数据class,但是当我将它分配给另一个元数据时 class 我收到错误 TypeError: __init_subclass__() takes no keyword arguments
但我没有实现任何 __init_subclass__
.为什么调用这个函数?
class Meta(type):
def __new__(cls, name, bases, dct):
return super().__new__(cls, name, bases, dct)
class MyClass(meta=Meta):
pass
将 meta
更改为 metaclass
。传递给 class 签名的任何关键字参数都会传递给其父级的 __init_subclass__
方法。因为你输入的是 meta
而不是 metaclass
这个 meta
kwarg 被传递给它父级的 (object
) __init_subclass__
方法:
>>> object.__init_subclass__(meta=5)
TypeError: __init_subclass__() takes no keyword arguments
如果您实际实现了 __init_subclass__
但输入错误,则会出现类似的错误:
class Parent:
def __init_subclass__(cls, handler=None):
super().__init_subclass__()
cls.handler = handler
class CorrectChild(Parent, handler=5):
pass
class TypoChild(Parent, handle=5):
# TypeError: __init_subclass__() got an unexpected keyword argument 'handle'
pass
我正在尝试创建一个元数据class,但是当我将它分配给另一个元数据时 class 我收到错误 TypeError: __init_subclass__() takes no keyword arguments
但我没有实现任何 __init_subclass__
.为什么调用这个函数?
class Meta(type):
def __new__(cls, name, bases, dct):
return super().__new__(cls, name, bases, dct)
class MyClass(meta=Meta):
pass
将 meta
更改为 metaclass
。传递给 class 签名的任何关键字参数都会传递给其父级的 __init_subclass__
方法。因为你输入的是 meta
而不是 metaclass
这个 meta
kwarg 被传递给它父级的 (object
) __init_subclass__
方法:
>>> object.__init_subclass__(meta=5)
TypeError: __init_subclass__() takes no keyword arguments
如果您实际实现了 __init_subclass__
但输入错误,则会出现类似的错误:
class Parent:
def __init_subclass__(cls, handler=None):
super().__init_subclass__()
cls.handler = handler
class CorrectChild(Parent, handler=5):
pass
class TypoChild(Parent, handle=5):
# TypeError: __init_subclass__() got an unexpected keyword argument 'handle'
pass