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라고 한다.

좋은 웹페이지 즐겨찾기