class Foo(type):
def foo(cls) -> None: ...
class Bar(Foo):
def asdf(cls) -> None:
cls.foo()
class Baz(metaclass=Bar):
# no error.
# at runtime it raises TypeError: Baz.foo() missing 2 required positional arguments: 'self' and 'asdf'
def foo(self, asdf: int) -> None: ...
Baz.asdf()
playground