Python Super

Python Super super()는 상속 관계에서 부모 클래스의 메서드를 호출하는 데 사용되는 중요한 도구. 부모 클래스(슈퍼클래스)의 메서드를 호출할 때 사용된다. 주로 자식 클래스에서 부모 클래스의 메서드를 확장하거나 재정의할 때 활용된다. 사용 예제: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Animal: def __init__(self, name): self.name = name def speak(self): return f"{self.name} makes a sound" class Dog(Animal): def __init__(self, name, breed): # 부모 클래스의 __init__ 메서드 호출 super().__init__(name) self.breed = breed def speak(self): # 부모 클래스의 speak 메서드를 확장 base_sound = super().speak() return f"{base_sound} - specifically, a woof!" # 사용 예시 my_dog = Dog("Rex", "Golden Retriever") print(my_dog.speak()) # 출력: "Rex makes a sound - specifically, a woof!" 특징 부모 클래스 참조: super()는 현재 클래스의 부모 클래스를 참조한다. 메서드 연결: 부모 클래스의 메서드에 접근하여 호출할 수 있게 한다. 동적 결정: 런타임에 메서드 호출을 결정한다. MRO(Method Resolution Order) 활용: 다중 상속 시 메서드 해석 순서를 따른다. 장점 코드 재사용: 부모 클래스의 코드를 재사용하여 중복을 줄인다. 유연성: 부모 클래스의 구현을 변경해도 자식 클래스에서 수정할 필요가 없다. 다중 상속 지원: 복잡한 상속 구조에서도 적절한 부모 메서드를 호출할 수 있다. 단점 복잡성: 다중 상속 시 상속 구조가 복잡해질 수 있다. 예상치 못한 동작: 상속 계층에 따라 의도하지 않은 메서드가 호출될 수 있다. 주요 사용 방법 super().init(): 부모 클래스의 생성자를 호출한다. super().method_name(): 부모 클래스의 특정 메서드를 호출한다. super()의 고급 기능과 특징 다중 상속에서의 활용 super()는 다중 상속 상황에서 메서드 해결 순서(MRO)를 따라 적절한 메서드를 찾아준다: ...

November 25, 2024 · 4 min · Me