TIL — 객체 지향 프로그래밍 (4)
참고 자료
https://www.py4e.com/lessons/servces
찰스 세브란스. 『데이터를 다루며 배우는 파이썬』. 인사이트, 2019.
상속
객체 지향 프로그래밍의 또 다른 강력한 기능은 현재 클래스를 확장해서 새로운 클래스를 만들 수 있다는 점입니다. 클래스를 확장할 때는 '부모 클래스'인 원본 클래스를 호출해서 '자식 클래스'인 새로운 클래스를 생성합니다.
이번 예제에서는 PartyAnimal 클래스 정의를 별도의 소스 파일로 옮깁니다.
class PartyAnimal:
x = 0
name = ''
def __init__(self, nam):
self.name = nam
print(self.name,'constructed')
def party(self) :
self.x = self.x + 1
print(self.name,'party count',self.x)
# Code: https://www.py4e.com/code3/party.py
다음으로, 다른 파일에서 PartyAnimal 클래스를 가져와서(import), 아래처럼 확장합니다.
from party import PartyAnimal
class CricketFan(PartyAnimal):
points = 0
def six(self):
self.points = self.points + 6
self.party()
print(self.name,"points",self.points)
s = PartyAnimal("Sally")
s.party()
j = CricketFan("Jim")
j.party()
j.six()
print(dir(j))
# Code: https://www.py4e.com/code3/party6.py
CricketFan 객체를 정의할 때, PartyAnimal 클래스를 확장하고 있다는걸 나타냅니다. 이 말은 PartyAnimal 클래스의 모든 변수(x)와 메서드(party)가 CricketFan 클래스에 의해 상속(inherit)된다는 뜻입니다.
CricketFan 클래스 내부의 six 메서드를 보면, PartyAnimal 클래스의 party 메서드를 호출하고 있음을 볼 수 있습니다. 부모 클래스의 변수와 메서드는 자식 클래스로 병합(merge)됩니다.
Sally constructed
Sally party count 1
Jim constructed
Jim party count 1
Jim party count 2
Jim points 6
['__class__', '__delattr__', ...
'__weakref__', 'name', 'party', 'points', 'six', 'x']
CricketFan 클래스의 인스턴스인 j에 dir을 호출하면, 부모 클래스의 속성과 메서드 외에도, CricketFan 클래스를 확장하면서 추가된 속성과 메서드가 들어있다는 걸 볼 수 있습니다.
Author And Source
이 문제에 관하여(TIL — 객체 지향 프로그래밍 (4)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sungbolee/TIL-9-객체-지향-프로그래밍-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)