상속을 하는 이유
- 기존의 설계를 바틍으로 추가된 부분만 만들기 대문에 바르게 만들 수 있다. 이를 재사용(reuse)이라 하며, 생산성과도 관련이 있다.
- 기존의 설계가 안정적이면 이를 바탕으로 만드는 것이 안정성을 보장 받을 수 있다.
문법
class 클래스_이름(기본_클래스):
클래스_본체
* 파이썬에서는 다중 상속을 지원한다.
- 기본_클래스 위치에 콤마(,)를 구분자로 나열하면 된다.
먼저 잘못된 상속을 살펴보자
위 예제를 보면 color 속성은 접근이 가능하지만 부모의 speed 속성을 접근하려고 하면 에러가 발생이 된다.
* 파이썬에서는 자식의 인스턴스를 만들때 부모의 인스턴스가 자동으로 만들어지지 않는다
정말 그런지 확인 해보자
__dict__ 모듈속성을 이용하여 살펴보면 _color 속성만 있는것을 확인 할 수 있다.
그러면 위 예제를 다시 보자 main을 보면 start() 를 호출 하고 나면 _speed 속성이 추가 된것을 확인 할 수 있다
왜 _speed가 추가 되었을까?
Car의 start 메소드를 확인해보자
start의 self는 무었을 의미할가?
바로 my_sportcar 를 의미한다.
그러면 _speed = 20 은???? 파이썬은 동적 속성 추가가 가능하다..
결국 이 code에서 _speed 속성이 동적으로 추가가 되는 것이다
결국 이 문제를 해결 하기 위해서는,
Car의 인스턴스를 생성해야 하는데 이를 위해서는 자식의 생성자에서 부모의 생성자를 명시적으로 호출 해줘야 한다.
업그레이드 버전(최종) - 오버라이딩 포함
'ⓟrogramming > Python' 카테고리의 다른 글
[Python] 다중 상속 (0) | 2016.10.13 |
---|---|
[Python] 오버로딩 - overoading (0) | 2016.10.13 |
[Python] string to int list - 숫자로 이루어진 문자열을 숫자리스트로 변환 (0) | 2016.10.13 |
[Python] 파이썬 주민등록번호 검사기 예제 (0) | 2016.10.12 |
[Python] Package 이용방법 (0) | 2016.10.12 |