Published 2021. 1. 20. 20:37

Class Inheritance (상속)

  • 기존에 정의해둔 클래스의 기능을 그대로 물려받을 수 있다.
  • 기존 클래스에 기능 일부를 추가하거나, 변경하여 새로운 클래스를 정의한다.
  • 코드를 재사용할 수 있게된다.
  • 상속 받고자 하는 대상인 기존 클래스는 (Parent, Super, Base class 라고 부른다.)
  • 상속 받는 새로운 클래스는(Child, Sub, Derived class 라고 부른다.)
  • 의미적으로 is-a관계를 갖는다

 

class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def eat(self, food):
        print('{}은 {}을 먹습니다.'.format(self.name, food))
        
    def sleep(self, minute):
        print('{}은 {}분 동안 잡니다.'.format(self.name, minute))
        
    def work(self, minute):
        print('{}은 {}분 동안 일합니다.'.format(self.name, minute))

class student:
    pass
    

class employee:
    pass

son = person('Sonny', 30)
son.eat('BBQ')
son.sleep(30)
son.work(60)

>> Sonny은 BBQ을 먹습니다.
>> Sonny은 30분 동안 잡니다.
>> Sonny은 60분 동안 일합니다.

기본적인 eat, sleep, work 메쏘드가 person 클래스 안에 있다.

 

class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def eat(self, food):
        print('{}은 {}을 먹습니다.'.format(self.name, food))
        
    def sleep(self, minute):
        print('{}은 {}분 동안 잡니다.'.format(self.name, minute))
        
    def work(self, minute):
        print('{}은 {}분 동안 일합니다.'.format(self.name, minute))

class student(person): # person이기도 하기때문에 기본적인 것을 상속받을 수 있다.
    def __init__(self, name, age):
        self.name = name
        self.age = age
    

class employee(person):
    def __init__(self, name, age):
        self.name = name
        self.age = age

son = student('Sonny', 30) # 학생으로 인스턴스를 만들어도 상속받았기 때문에 작동한다.
son.eat('BBQ')
son.sleep(30)
son.work(60)

>> Sonny은 BBQ을 먹습니다.
>> Sonny은 30분 동안 잡니다.
>> Sonny은 60분 동안 일합니다.

student 클래스는 student(person)으로 person 클래스를 상속받았다.

student로 만든 인스턴스가 작동할 수 있는 것을 볼 수 있다.

'📌 Python' 카테고리의 다른 글

Python - 기본 타입으로 함수 만들기  (0) 2021.01.21
Python - method override, super  (0) 2021.01.20
Python - method  (0) 2021.01.20
Python - __init__  (0) 2021.01.20
Python - class, object  (0) 2021.01.20
복사했습니다!