Issue 24235: ABCs don't fail metaclass instantiation (original) (raw)
If a subclass has abstract methods, it fails to instantiate... unless it's a metaclass, and then it succeeds.
import abc class A(metaclass=abc.ABCMeta): ... @abc.abstractmethod ... def foo(self): pass ... class B(A): pass ... B() Traceback (most recent call last): File "", line 1, in TypeError: Can't instantiate abstract class B with abstract methods foo class C(A, type): pass ... class c(metaclass=C): pass ... C('', (), {}) <class '__main__.'>