반응형
클래스의 상속
- 상속(Inheritance)이란 물려받다라는 뜻으로, 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것이다.
- 보통 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황일 때, 기존 클래스를 변경하지 않고 기능을 추가하거나 변경하려고 상속을 사용한다.
- 상속 받고자 하는 대상인 기존 클래스는 'Parent, Super, Base class' 라고 부른고, 상속 받는 새로운 클래스는 'Child, Sub, Derived class' 라고 부른다.
# 클래스 상속 기본 구조
class 클래스명(상속할 클래스명)
# FourCal 상속한 MoreFourCal 클래스 수정하기 - a의 b제곱 기능 추가
>>> class MoreFourCal(FourCal): # FourCal 클래스 상속
... def pow(self): # pow 메서드 추가
... result = self.first ** self.second
... return result
>>> a = MoreFourCal(4, 2) # MoreFourCal 클래스 a객체에 값 세팅
>>> a.add() # FourCal의 모든 기능을 사용 가능
6
>>> a.mul()
8
>>> a.sub()
2
>>> a.div()
2
>>> a.pow() # 추가한 pow 메서드 수행
16
- 다중 상속이란 여러 개의 부모 클래스로부터 동시에 특성을 물려받는 것을 의미하한다.
- JAVA 등 일반적인 프로그래밍 언어에서는 보통 다중상속을 허용하지 않지만 파이썬에서는 다중 상속을 허용하며, 자식 클래스를 생성할 때 부모 클래스들을 콤마(,)를 사용하여 나열하면 된다.
>>> class WolfDog(Wolf, Dog):
... pass
메소드 오버라이딩
- 오버라이딩(Overriding, 덮어쓰기)이란 부모 클래스로부터 상속받은 특성을 자식 클래스에서 재정의하는 것을 의미한다.
- 부모 클래스의 메소드를 동일한 이름으로 다시 만들며, 자식 클래스의 객체로 메소드를 호출하면 재정의된 메소드가 호출된다.
>>> class Person: # Person 클래스 생성
... def __init__(self):
... print('Person __init__')
... self.hello = '안녕하세요.'
>>> class Student(Person): # Person 클래스 상속받은 Student
... def __init__(self):
... print('Student __init__')
... super().__init__() # 기존 클래스 __init__ 메서드 재정의
... self.school = '파이썬 코딩 도장'
>>> james = Student()
>>> print(james.school)
>>> print(james.hello)
Student __init__
Person __init__
파이썬 코딩 도장
안녕하세요.
super()
- 자식 클래스에서 부모클래스의 메소드를 호출할 때 사용한다. 보통 오버라이딩하면 부모 클래스 기능 완전히 사라지나, super를 사용하면 부모 클래스에서 일부만 추가가 가능해진다.
Reference
반응형
'Data > Python' 카테고리의 다른 글
[Python] 파이썬 모듈 - 정의, 생성 및 불러오기 (0) | 2023.06.17 |
---|---|
[Python] 파이썬 객체 정보 은닉 - Public, Private, Protected (0) | 2023.06.17 |
[Python] 파이썬 클래스 - 변수와 메소드 (0) | 2023.06.17 |
[Python] 파이썬 클래스 - 정의 및 생성자 (0) | 2023.06.17 |
[Python] 파이썬 입출력 - 파일 읽고 쓰기 (0) | 2023.06.17 |