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):
pass
class C(A):
pass
元类MetaB的__new__方法应该只会在创建类A时被调用一次, 因为类A是直接使用MetaB作为元类的.
然而, 当创建类C时, 由于C继承自A, 并且没有显式指定一个不同的元类, C将间接地继承A的元类MetaB.
因此, 在创建类C时, MetaB的__new__方法也会被调用.