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