Programming

; develop a program

Back-End/Python

[Python] 상속(Inheritance)

Clloud_ 2022. 9. 27. 12:32
반응형

이번 포스팅에서는 파이썬의 상속(Inheritance)에 대하여 공부를 해보고자 한다.

 


상속(Inheritance)

상속은 기존 클래스를 확장하여 instance 변수나 메소드를 추가하는 방식을 말한다.

 

이미 존재하는 클래스의 모든 특징을 물려받는 새로운 클래스를 손쉽게 생성할 수 있다.

기존 클래스를 직접 수정하지 않고, 기능을 추가하거나 변경하고 싶을 때 유용하게 사용할 수 있다.

 

이미 존재하던 클래스를 부모 클래스(parent class) 또는 기초 클래스(base class), 상위(Super) 클래스라고 부른다.

물려주는 클래스이고 좀 더 추상적이다.

 

상속을 통해 새롭게 생성되는 클래스를 자식 클래스(child class) 또는 파생 클래스(derived class), 하위(Sub) 클래스라고 부른다.
상속하는 클래스이고 좀 더 구체적이다.

 


클래스 상속

클래스를 선언할 때 다른 클래스를 상속받고 싶은 경우, 소괄호( )를 사용한다.

소괄호( ) 안에 상속받고 싶은 클래스명을 넣어 전달함으로써 해당 클래스의 모든 멤버를 상속한다.

 

예제

Person 클래스를 생성하고 함수를 정의한다.

class Person:

    def go(self):
        print("학교에 간다.")

    def eat(self):
        print("밥을 먹는다.")

Teacher 클래스를 생성하고 함수를 정의한다.

메소드를 Person에 정의하고 그것을 상속받아서 구현한다.

class Teacher(Person):

    def teach(self):
        print("수업을 가르친다.")

Student 클래스를 생성하고 함수를 정의한다.

메소드를 Person에 정의하고 그것을 상속받아서 구현한다.

class Student(Person):

    def study(self):
        print("수업을 듣는다.")

UniversityStudent 클래스를 생성하고 함수를 정의한다.

메소드를 Student에 정의하고 그것을 상속받아서 구현한다.

class UniversityStudent(Student):

    def drink(self):
        print('술을 마신다.')

Student 객체를 생성하고 속성(Attribute) 값들을 조회한다.

s = Student()
s.go()
s.eat()
s.study()

[실행결과]

학교에 간다.
밥을 먹는다.
수업을 듣는다.

Student 객체를 생성하고 속성(Attribute) 값들을 및 조회한다.

t = Teacher()
t.go()
t.eat()
t.teach()

[실행결과]

학교에 간다.
밥을 먹는다.
수업을 가르친다.

UniversityStudent 객체를 생성하고 속성(Attribute) 값들을 조회한다.

us = UniversityStudent()
us.go()
us.eat()
us.study()
us.drink()

[실행결과]

학교에 간다.
밥을 먹는다.
수업을 듣는다.
술을 마신다.

 


반응형