Python OOP 상속: 부모 및 자식 클래스
Python OOP에서 상속을 배웁니다. 마스터 서브클래싱, 메소드 재정의, super() 사용 및 다중 상속 패턴.
개요
상속은 객체지향 프로그래밍(OOP)의 기본 기둥 중 하나입니다. 이는 새 클래스(자식 또는 하위 클래스로 알려짐)가 기존 클래스(상위 클래스 또는 슈퍼클래스로 알려짐)의 속성과 메서드를 채택할 수 있도록 하는 메커니즘입니다. 이 디자인 패턴은 코드 재사용을 촉진하고 중복성을 줄이며 애플리케이션의 다양한 구성 요소 간에 논리적, 계층적 관계를 설정합니다.
Python에서 상속을 구현하려면 하위 클래스 정의 중 'class Child(Parent):'와 같이 상위 클래스 이름을 괄호 안에 전달합니다. 하위 클래스는 상위 클래스의 모든 메소드와 변수를 즉시 상속받습니다. 자식에게 사용자 정의 동작이 필요한 경우 동일한 이름으로 재정의하여 부모 메서드를 재정의할 수 있습니다. 재정의된 메서드 내에서 내장 `super()` 함수를 사용하여 상위 구현을 계속 호출할 수 있으므로 기존 로직을 완전히 대체하는 대신 확장할 수 있습니다.
많은 정적으로 유형이 지정된 언어와 달리 Python은 기본적으로 다중 상속을 지원합니다. 즉, 하위 클래스는 둘 이상의 상위 클래스(예: `class SmartDevice(Camera, Phone):`)에서 상속할 수 있습니다. 이름이 충돌할 때 어떤 부모 메서드가 실행되는지 확인하기 위해 Python은 MRO(메서드 해결 순서)라는 엄격한 알고리즘을 사용합니다. 확장 가능한 객체 지향 아키텍처를 설계하려면 상속 트리를 구성하고 super()를 사용하는 방법을 이해하는 것이 중요합니다.
코드 및 실행 출력
super()를 사용하여 초기화를 재정의하는 상위 Vehicle 클래스와 하위 Car 하위 클래스를 만듭니다.
class Vehicle:
def __init__(self, brand, year):
self.brand = brand
self.year = year
def display_info(self):
return f"{self.year} {self.brand}"
class Car(Vehicle):
def __init__(self, brand, year, model):
# Call parent constructor
super().__init__(brand, year)
self.model = model
def display_info(self):
# Override parent method and extend it
parent_info = super().display_info()
return f"{parent_info} {self.model}"
my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())2026 Ford Mustang단계별 구현
- Exception에서 상속되는 사용자 정의 예외 클래스 만들기
- 일반 뷰에서 상속받아 UI 구성요소(예: 버튼) 만들기
- 계층적 데이터베이스 모델 정의(예: 사용자, 직원, 관리자)
자주 묻는 질문
super()는 서브클래싱에서 무엇을 합니까?
super()는 상위 클래스의 임시 객체를 반환하여 해당 메서드를 호출할 수 있도록 하며, 이는 __init__에서 상위 필드를 초기화하는 데 특히 유용합니다.
클래스가 상속되는 것을 막을 수 있나요?
Python은 상속을 제한하기 위해 Java와 같은 'final' 키워드를 지원하지 않습니다. 일반적으로 우리는 클래스 의도를 문서화하거나 타이핑 모듈의 @final 주석과 함께 유형 검사기를 사용합니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python에서 목록을 정렬하는 방법(오름차순 및 내림차순)
sort() 메서드와 sorted() 함수를 사용하여 Python에서 목록을 정렬하는 방법을 알아보세요. 사용자 정의 키 정렬 및 역순 예시를 살펴보세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.