다른 객체지향 프로그래밍 언어들처럼, Python도 클래스의 상속을 지원합니다. 객체지향 프로그래밍이라는 패러다임은 현실 세계를 객체로 표현하기 위해 만들어졌으므로, 객체의 상속이라는 개념은 더 효율적으로 객체지향을 표현할 수 있도록 합니다. 예를 들어 토끼(Rabbit)와 고양이(Cat)가 동물(Animal)에 속하는 것을 상속 구조로 표현할 수 있습니다.
Animal
이라는 클래스에 run
메소드를 정의했고, 메소드에 하나의 출력문을 두었습니다. 그리고 이 클래스를 상속받는 Cat
과 Rabbit
클래스를 정의하였습니다. 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 |