class MetaB(type):def __new__(cls, name, bases, attrs):print(f"使用元类 {cls.__name__} 创建{name}类 ")return super().__new__(cls, name, bases, attrs)class A(metaclass=MetaB):passclass C(A):pass
元类MetaB的__new__方法应该只会在创建类A时被调用一次, 因为类A是直接使用MetaB作为元类的.
然而, 当创建类C时, 由于C继承自A, 并且没有显式指定一个不同的元类, C将间接地继承A的元类MetaB.
因此, 在创建类C时, MetaB的__new__方法也会被调用.