01.05 오늘 배운것.
오늘은 클래스 상속과 모듈 패키지에 관해 배웠다.
먼저 클래스에서는 밑의 그림과 같이 기반 클래스(슈퍼 클래스, 부모 클래스)와
파생 클래스(서브 클래스, 자식 클래스)가 있다.
예를 들자면, '○○초등학교 ○학년'이면 초등학교는 기반 클래스고, 학년은 파생 클래스라고 할 수 있다.
class Person:
def greeting(self):
print('안녕하세요.')
class Student(Person):
def study(self):
print('공부하기')
james = Student()
james.greeting() # 안녕하세요.: 기반 클래스 Person의 메서드 호출
james.study() # 공부하기: 파생 클래스 Student에 추가한 study 메서드
이와 같이 클래스를 생성하자면, 먼저 student 클래스를 만들때 ()안에 기반 클래스인 person을 넣어주면 person클래스의 기능을 student가 물려받게 된다.
그래서 맨 밑에 제임스는 결국 person이 기능을 가지게 되어 greeting을 하면 '안녕하세요'가
출력이 되고, 그 밑에 study를 하면 '공부하기'가 출력된다.
또 기억에 남는것은 is-a와 has-a다.
먼저 is-a를 살펴보면
class Person:
def greeting(self):
print('안녕하세요.')
class Student(Person):
def study(self):
print('공부하기')
여기서 student는 사람 person이므로 같은 동등한 관계이다. 그래서 동등한 상속관계는 is-a라고 한다.
class Person:
def greeting(self):
print('안녕하세요.')
class PersonList:
def __init__(self):
self.person_list = []
def append_person(self, person):
self.person_list.append(person)
여기서는 상속을 하지 않고, 속성에 인스턴스를 넣어서 관리하므로 Personlist가 Person을 포함하고 있다. 즉 Personlist안에 Person이 있으므로 동등한 관계가 아닌 포함된 관계이기 때문에 has-a라고 한다.
Author And Source
이 문제에 관하여(01.05 오늘 배운것.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youngwonkyu/01.05-오늘-배운것저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)