[참고] 저자 본인의 공부 및 참고용으로 쓰여진 글인점을 알려드립니다.
# 코딩도장의 내용입니다.
https://dojang.io/mod/page/view.php?id=2384
파이썬 코딩 도장: 36.1 사람 클래스로 학생 클래스 만들기
Unit 36. 클래스 상속 사용하기 지금까지 클래스의 기본적인 사용 방법을 알아보았습니다. 이번에는 클래스 상속(inheritance)을 사용해보겠습니다. 상속은 무언가를 물려받는다는 뜻입니다. 그래서
dojang.io
클래스 상속 (inheritance) 사용
상속 : 무언가를 물려받는다는 뜻
클래스 상속 : 물려받은 기능을 유지한채로 다른 기능을 추가할 때 사용하는 기능.
기반 클래스(base class) : 기능을 물려주는 클래스 ; 부모 클래스(parent class), 슈퍼 클래스(super class)
파생 클래스(derived class) : 상속을 받아 새롭게 만드는 클래스 ; 자식 클래스 (child class) ; 서브 클래스 (subclass)
클래스 상속 비유
예를 들어 조류, 어류는 공통된 조상인 척추동물로 부터 물려받은 특성을 공유하면서 각자 고유한 특성을 가집니다. 척추를 가졌다는 특성은 변함이 없지만 날개를 가졌으며 조류, 물속에 살면 어류인 식입니다. 즉, 같은 계통으로 특성을 공유하며 전혀 상관없이 어류가 꽃 식물의 특성을 가지지는 않는다.
마찬가지로 클래스 상속도 기반 클래스의 능력을 그대로 활용하면서 새로운 클래스를 만들 때 사용한다. 동물을 예로 들면 척추동물에서 포유류, 조류, 파충류 등을 만드는 식이다.
그냥 새로운 클래스를 만들면 되는데 왜 이런 상속 개념을 만들었을까?? 만약 새로운 기능이 필요할 때마다 계속 클래스를 만든다면 중복되는 부분을 반복해서 만들어야 합니다. 이럴 때 상속을 사용하면 중복되는 기능을 만들지 않아도 됩니다.따라서 상속은 기존 기능을 재사용할 수 있어서 효율적입니다.
# 사람 클래스로 학생 클래스 만들기
class baseclass :
<code ...>
class subclass(baseclass) :
<code ...>
클래스 상속은 다음과 같이 클래스를 만들 때 () <괄호>를 붙이고 안에 기반 클래스 이름을 넣는다.
class Person :
def greeting(self) :
print('안녕하세요.')
class Student(Person) :
def study(self) :
print('공부하기')
james = Student()
james.greeting()
james.study()
>>> 안녕하세요
>>> 공부하기
Student 클래스를 만들 때 class Student(Person) : 과 같이 ()(괄호) 안에 기반 클래스인 Person 클래스를 넣었습니다. 이렇게 하면 Person 클래스의 기능을 물려받은 Student 클래스가 됩니다.
Student 클래스에는 greeting 메서드가 없지만 Person 클래스를 상속받았으므로 greeting 메서드를 호출할 수 있습니다.
이처럼 클래스 상속은 기반 클래스의 기능을 유지하면서 새로운 기능을 추가할 수 있다. 특히 클래스 상속은 연관되면서 동등한 기능일 때 사용한다. 즉, 학생은 사람이므로 연관된 개념이고, 학생은 사람에게 역할만 확장되었을 뿐 동등한 개념이다.
참고 | 상속 관계 확인하기
클래스의 상속 관계를 확인하고 싶을 때는 issubclass 함수를 사용합니다. 즉, 클래스가 기반 클래스의 sub class 인지 확인한다. 기반 클래스의 파생 클래스가 맞으면 True, 아니면 False 를 반환
issubclass(파생클래스, 기반클래스)
class Person:
pass
class Student(Person) :
pass
issubclass(Student, Person)
>>> True
클래스, 기반클래스)
'Programming > Python' 카테고리의 다른 글
[클래스] 기반 클래스의 속성 사용하기 (1) | 2023.03.13 |
---|---|
[클래스] 상속 관계와 포함 관계 (1) | 2023.03.13 |
[클래스] 클래스 메서드 사용하기 (0) | 2023.03.13 |
[클래스] 정적메서드 사용하기 (0) | 2023.03.13 |
[클래스] 클래스 속성과 인스턴스 속성 알아보기 (0) | 2023.03.13 |