class MetaA(type):
# def __init__(metacls, name, bases, namespace):
def __new__(metacls, name, bases, namespace):
return type.__new__(metacls, name, bases, namespace)
class A(metaclass = MetaA):
def __init__(self):
self.x = 0
def __new__(cls):
return super().__new__(cls)
a = A()
B = MetaA('B', (), {})
b = B()
클래스의 메소드 __new__(cls)
가 클래스로 인스턴스를 생성할 때 호출되듯이, 메타클래스의 메소드 __new__(metacls, name, bases, namespace)
는 메타클래스로 클래스를 생성할 때 호출된다.