토막 지식

파이썬에서 클래스를 함수 안에 정의할 수 있는 이유

디정 2024. 6. 12. 16:27

자바스크립트와 파이썬은 C++나 JAVA와 달리 변수 타입이 동적으로 설정된다. 변수 타입이 런타임에서 결정된다는 뜻이다.

 

때문에 파일 수준이나 멤버 수준에서 정적으로 타입을 지정하는 C++나 JAVA와 달리 함수에서 동적으로 클래스의 멤버를 수정하거나 추가하는게 가능하다.

 

예를 들면 다음의 예시다. 

 

#동적으로 클래스의 멤버 변수를 추가하는 경우
class MyClass:
    pass

obj = MyClass()
obj.new_attr = "New Attribute"
print(obj.new_attr)  # 출력: New Attribute


#클래스를 함수 안에서 정의하는 경우
def create_class():
    class InnerClass:
        def __init__(self, value):
            self.value = value
        def display(self):
            print(f"Value is {self.value}")
    return InnerClass

MyClass = create_class()
obj = MyClass(10)
obj.display()  # 출력: Value is 10

 

위 두 경우 모두 파이썬의 동적 특성 덕분에 가능하다.