상속이란 한 클래스의 필드와 메소드를 다른 클래스에 부여하는 중복코드를 줄이는 기술이다.
파이썬도 Java처럼 Object클래스를 상속받아서 구현된다.
1. 상속 구현
2. 부모 생성자 호출
3. Object 클래스
모든 클래스의 부모 클래스인 기본 클래스이다.
Object 클래스 상속을 통해 __str__(), __repr__(), __eq__(), __hash__() 등의 메소드를 사용할 수 있다.
(1) Object 클래스의 존재 이유
모든 클래스에 공통으로 들어가는 내용을 클래스마다 재정의하면 생산성 낭비이기에 Object 클래스가 생겨났다.
# 우리가 정의할 때
class MyClass:
pass
# 실제로 정의될 때
class MyClass(Object):
pass
4. 메소드 오버라이딩
객체 지향 프로그래밍(OOP)에서 다형성을 구현하는 중요 개념이다.
자식 클래스에 동일한 이름과 매개변수로 정의된 메소드가 부모 클래스에 있어도 자식 클래스 메소드가 우선적용되어 부모 클래스 메소드는 덮어써진다.
5. 다중 상속
시그니쳐란?
메소드명과 매개변수 갯수가 동일한 경우 "시그니쳐가 같다." 라고 표현한다.
C3 선형화 알고리즘
* 파이썬의 다중 상속에서 메서드 해결 순서(Method Resolution Order, MRO)를 계산하는데 사용되는 알고리즘
* 복잡한 상속 구조에서 메서드 호출 순서를 명확하게 결정하기 위해 고안된 알고리즘
* C3 선형화 규칙
* 자식 클래스가 항상 부모 클래스보다 먼저 온다.
* 부모 클래스들은 상속된 순서대로 나타난다.
* 충돌을 해결할 때는 왼쪽에 있는 부모 클래스의 순서를 우선시한다.
6. super() 함수
super()는 파이썬의 내장 함수로서, 상속과 관련된 작업을 수행할 때 사용됩니다. 특히, 자식 클래스에서 부모 클래스의 메서드를 호출할 때 사용됩니다. super()의 주요 목적은 자식 클래스에서 부모 클래스의 메서드를 오버라이드(재정의)하면서도 그 오버라이드된 메서드 내에서 부모 클래스의 원본 메서드를 호출하는 것입니다.
'Python > 개요 및 문법' 카테고리의 다른 글
예외 (Exception) (0) | 2024.09.30 |
---|---|
스페셜 메소드 (0) | 2024.09.30 |
클로저와 데코레이터 (0) | 2024.09.28 |
객체지향과 클래스 (0) | 2024.09.27 |
콜백함수와 람다함수 ( feat. map(), filter() ) (0) | 2024.09.26 |