336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

상속을 하는 이유

 - 기존의 설계를 바틍으로 추가된 부분만 만들기 대문에 바르게 만들 수 있다. 이를 재사용(reuse)이라 하며, 생산성과도 관련이 있다.

 - 기존의 설계가 안정적이면 이를 바탕으로 만드는 것이 안정성을 보장 받을 수 있다.


문법

class 클래스_이름(기본_클래스):

   클래스_본체


* 파이썬에서는 다중 상속을 지원한다.

 - 기본_클래스 위치에 콤마(,)를 구분자로 나열하면 된다.


먼저 잘못된 상속을 살펴보자

 

결과 값


위 예제를 보면 color 속성은 접근이 가능하지만 부모의 speed 속성을 접근하려고 하면 에러가 발생이 된다.


* 파이썬에서는 자식의 인스턴스를 만들때 부모의 인스턴스가 자동으로 만들어지지 않는다

정말 그런지 확인 해보자




__dict__ 모듈속성을 이용하여 살펴보면 _color 속성만 있는것을 확인 할 수 있다.



그러면 위 예제를 다시 보자 main을 보면 start() 를 호출 하고 나면 _speed 속성이 추가 된것을 확인 할 수 있다

왜 _speed가 추가 되었을까?


Car의 start 메소드를 확인해보자


start의 self는 무었을 의미할가?

바로 my_sportcar 를 의미한다.

그러면 _speed = 20 은???? 파이썬은 동적 속성 추가가 가능하다..

결국 이 code에서 _speed 속성이 동적으로 추가가 되는 것이다


결국 이 문제를 해결 하기 위해서는,

Car의 인스턴스를 생성해야 하는데 이를 위해서는 자식의 생성자에서 부모의 생성자를 명시적으로 호출 해줘야 한다.




super() 를 이용하여 부모의 생성자를 호출하면 위와 같이 속성에 _speed값이 들어 있는것을 확인 할 수 있다.


업그레이드 버전(최종) - 오버라이딩 포함


블로그 이미지

뚱땡이 우주인

,