본문 바로가기

파이썬 도전기

03.19 상속

상속 : 파이썬에서 상속은  클래스의 속성과 메서드를 다른 클래스에 전달하는 기능을 의미합니다. 상속을 사용하면 기존의 코드를 재사용하고 확장할  있습니다. 기본적으로 파이썬의 모든 클래스는 object라는 기본 클래스로부터 상속받습니다.

 

상속의 기본 코드

 

 

클래스 상속 시 생성자 호출 순서
1. 자식 클래스(child class)의 생성자가 호출됩니다.
2. 자식 클래스의 생성자에서 부모 클래스(parent class)의 생성자를 호출해야 합니다. 이를 위해 super() 함수를 사용합니다. super() 함수는 현재 클래스의 부모 클래스를 참조하며, 부모 클래스의 생성자를 호출할 수 있습니다.
3. 부모 클래스의 생성자가 호출됩니다.
4. 부모 클래스의 생성자가 실행을 마치면 자식 클래스의 생성자로 돌아가 자식 클래스의 생성자 코드가 실행됩니다.

 

 

object 클래스 : 파이썬의 모든 클래스의 기본 클래스

class My class:

    pass

위와아래와 코드는 동일

class MyClass(object):pass

 

메서드 오버라이딩 : 자식클래스에서 부모 클래스의 메서드를 재정의하는것을 의미 / 오버라이딩을 사용하면, 서브 클래스에서 상속받은 메서드의 동작을 변경하거나 확장 할수 있음

 

 

 

 

 

 

 

에러가 나는이유는 자식클래스가 부모클래스를 쓸수 있는거지 부모클래스가 자식클래스를 쓸수없기 때문

 

 

다중상속 : 다중 상속은 클래스가  이상의 부모 클래스로부터 상속을 받는 기능을 의미합니다. 파이썬은 다른 많은 객체 지향 언어와 달리 다중 상속을 지원합니다. 다중 상속을 사용하면 코드의 재사용성을 향상시킬  있지만, 동시에 복잡성이 높아지기 때문에 주의해야 합니다.

 

다중상속의 기본문

 

 

제일밑에 mro()

 

 

메서드 해석 순서 (Method Resolution Order, MRO):

파이썬에서는 위와 같은 다이아몬드 문제를 해결하기 위해 MRO를 사용합니다. MRO는 클래스의 메서드를 찾을 때 사용하는 규칙입니다.

D 클래스의 경우 MRO [D, B, C, A] 결정됩니다. 따라서 d.hello() 호출하면 B 클래스의 hello() 메서드가 실행됩니다.

 

 

선형화 알고리즘 :

Python의 다중상속에서 메서드 해결순서(MRO)를 개선하는데 사용되는 알고리즘

복잡한 상속 구조에서 메서드 호출 순서를 명확하게 결정하기 위해 고안된 알고리즘

 

super()메서드

super()는 파이썬의 내장 함수로서, 상속과 관련된 작업을 수행할  사용됩니다. 특히, 자식 클래스에서 부모 클래스의 메서드를 호출할  사용됩니다. super()의 주요 목적은 자식 클래스에서 부모 클래스의 메서드를 오버라이드(재정의)하면서도  오버라이드된 메서드 내에서 부모 클래스의 원본 메서드를 호출하는 것입니다.

 

기본적인 사용

 

 

 

 

__init__()메서드의 사용

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'파이썬 도전기' 카테고리의 다른 글

03.20 파이썬 예외처리  (0) 2024.03.20
03.19 스페셜 메서드  (0) 2024.03.19
03.19 클로저, 데코레이터  (0) 2024.03.19
03.18 과제 2  (0) 2024.03.18
03.18 객체지향과 클래스  (0) 2024.03.18