1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| class Meta(type):
def __prepare__(mcs, name, bases):
"""클래스 namespace 딕셔너리 반환 (Python 3+)"""
print(f"1. __prepare__: {name}")
return {}
def __new__(mcs, name, bases, namespace):
"""클래스 객체 생성"""
print(f"2. __new__: {name}")
return super().__new__(mcs, name, bases, namespace)
def __init__(cls, name, bases, namespace):
"""클래스 객체 초기화"""
print(f"3. __init__: {name}")
super().__init__(name, bases, namespace)
def __call__(cls, *args, **kwargs):
"""인스턴스 생성 시 호출"""
print(f"4. __call__: creating instance of {cls.__name__}")
return super().__call__(*args, **kwargs)
class MyClass(metaclass=Meta):
pass
# 출력: 1. __prepare__, 2. __new__, 3. __init__
obj = MyClass()
# 출력: 4. __call__: creating instance of MyClass
|