[Python] 파이썬

[Python] 파이썬 상속

ITsubin 2022. 9. 9. 12:35

상속이란?

> 파이썬에서는 어떤 클래스가 가지고 있는 기능을 그대로 물려받아 사용할 수 있는 클래스 생성 가능.

> 다른 클래스의 기능을 물려받을 때 "상속받는다"라는 표현 사용.

 

> 상속해주는 클래스는 부모클래스로, 슈퍼클래스, 기반클래스 등으로 불림.

> 상속받는 클래스는 자식클래스로, 서브클래스, 파생클래스 등으로 불림.

 

> 파이썬에서 "super"라는 키워드는 부모 클래스를 지정하는 용도로 사용.

 

상속 관계 구현

> 기본적으로 두 클래스가 상속 관계에 놓이려면 IS-A 관계가 성립.

( IS-A 관계란? : ' ~은(는) ~이다. '로 해석될 수 있는 관계 )

 

> 예시로 "학생은 사람이다"와 같은 관계는 IS-A 관계이며, Student가 자식 클래스, Person이 슈퍼 클래스가 된다.

 

> 슈퍼 클래스는 일반 클래스처럼 구현하면 되지만,

   서브 클래스는 어떤 슈퍼 클래스를 상속받는지 명시할 수 있도록 새로운 문법을 사용한다.

 

> 상속의 기본 형식은 아래와 같다.

class 부모클래스 :
	본문
    
class 자식클래스(슈퍼클래스) :
	본문
def __init__(self, name, school):
	super().__init__(name)
	self.school = school
class Person:

	''' 부모 클래스 '''
	def __init__(self, name):
		self.name = name
  
	def eat(self, food):
		print(f'{self.name}가 {food}를 먹습니다')
  

class Student(Person):
	''' 자식 클래스 '''
	def __init__(self, name, school):
		super().__init__(name)
		self.school = school

	def study(self):
		print(f'{self.name}는 {self.school}에서 공부합니다')

 

자식 클래스의 인스턴스 자료형

> 부모 클래스 객체는 부모 클래스의 인스턴스

> 그에 비해 자식 클래스 객체는 자식 클래스의 인스턴스이면서 동시에 부모 클래스의 인스턴스가 됨.

 

> 특정 객체가 어떤 클래스의 인스턴스인지 확인하기 위해 isinstance()함수를 사용.

isinstance(객체, 클래스)

> isinstance()함수는 객체가 클래스의 인스턴스인 경우 True를, 아니면 False를 반환.