다른 객체지향 프로그래밍 언어들처럼, Python도 클래스의 상속을 지원합니다. 객체지향 프로그래밍이라는 패러다임은 현실 세계를 객체로 표현하기 위해 만들어졌으므로, 객체의 상속이라는 개념은 더 효율적으로 객체지향을 표현할 수 있도록 합니다. 예를 들어 토끼(Rabbit)와 고양이(Cat)가 동물(Animal)에 속하는 것을 상속 구조로 표현할 수 있습니다.

Animal이라는 클래스에 run 메소드를 정의했고, 메소드에 하나의 출력문을 두었습니다. 그리고 이 클래스를 상속받는 CatRabbit 클래스를 정의하였습니다. Cat 클래스는 상위 클래스가 가지고 있는 run 메소드를 재정의(오버라이딩)했고, Rabbit 클래스는 해당 메소드를 별도로 정의하지 않았습니다.

이후 Cat 클래스의 인스턴스에서 run 호출 시 해당 클래스의 오버라이딩된 run 메소드가 호출되며 'Cat catty is running'이 출력되었고, Cat 클래스만 가지고 있는 cry 메소드를 호출하며 'Cat catty is crying'이 출력되었습니다. Rabbit 클래스의 인스턴스에서 run 호출 시 상위 클래스인 Animal.run 메소드가 호출되며 'carrot is running'이 출력되었습니다.

상속은 보통 기존 클래스를 변경하지 않고 기능을 확장하기 위해 사용합니다. 상위 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황이라면 상속을 이용해야만 할 것입니다.

'Python 계열 > Python 레거시 글' 카테고리의 다른 글

[Python] 연산자 오버로딩  (0) 2018.07.02
[Python] 언더스코어와 magic method  (0) 2018.07.01
[Python] 객체지향  (0) 2018.06.29
[Python] 빌트인 함수  (0) 2018.06.28
[Python] 값으로서의 함수와 lambda  (0) 2018.06.27

+ Recent posts