반응형
상속
- 상속이란 말 그대로 무언가를 그대로 넘겨준다는 뜻이다.
- 파이썬에서 상속을 해주는 클래스를 부모 클래스라고 하고 상속을 받는 클래스를 자식 클래스라고 부른다.
상속을 하는 이유?
- 클래스를 정의하려고 하다 보면 클래스들의 공통되는 특징들이 있다.
- 예를들어 사과, 바나나, 포도, 딸기 클래스를 정의하고 싶다고 하면 공통적으로 이름, 맛, 재배지, 색, 가격 등 공통적인 특성들이 있는데
- 이럴 경우 상속을 이용하여 공통되는 특징들은 부모 클래스에 정의를 해두고 그 부모 클래스로 부터 특징들을 상속받아 코드를 매번 작성하는 번거로움 없이 쉽게 프로그래밍 할 수 있다.
상속 예제 코드
class Fruit:
def __init__(self, name, taste, color, price):
self.name= name
self.taste = taste
self.color = color
self.price = price
print('과일의 이름은 {}입니다.'.format(self.name))
print('과일의 맛은 {}합니다.'.format(self.taste))
print('과일의 색은 {}입니다.'.format(self.color))
print('과일의 가격은 {}입니다'.format(self.price))
class Apple(Fruit):
def __init__(self,name,taste,color,price):
Fruit.__init__(self,name,taste,color,price)
class Banana(Fruit):
def __init__(self,name,taste,color,price):
Fruit.__init__(self,name,taste,color,price)
class Grape(Fruit):
def __init__(self,name,taste,color,price):
Fruit.__init__(self,name,taste,color,price)
apple1 = Apple('사과','상큼','빨간색','1000원')
print()
banana1 = Banana('바나나','달콤','노란색','500원')
print()
grape1 = Grape('포도','달콤','보라색','2000원')
출력 결과
- 이와 같이 중복되는 특성들을 상속받음으로써 매번 각 클래스 안에 공통되는 내용을 코딩할 필요가 없어진다.
다중 상속
- 말 그대로 여러 클래스로부터 상속을 받는다는 뜻이다.
- 클래스를 생성할 때 공통되는 부분이 A클래스에도 있고, B클래스에도 있다면 A클래스와 B클래스를 모두 상속받아 코딩을 효율적으로 하자
다중 상속을 하는 이유?
과일 중 수입과일이 있다고 가정해 보자.
수입과일은 수입 국가와 통관번호를 갖는다. 마침 수입과 관련된 클래스가 정의되어 있다고 하면
수입과일은 과일 클래스와 수입 클래스에서 다중 상속을 받는다면 특별한 코드 추가 없이 클래스를 정의할 수 있다.
다중 상속 예제 코드
class Fruit:
def __init__(self, name, taste, color, price):
self.name= name
self.taste = taste
self.color = color
self.price = price
print('과일의 이름은 {}입니다.'.format(self.name))
print('과일의 맛은 {}합니다.'.format(self.taste))
print('과일의 색은 {}입니다.'.format(self.color))
print('과일의 가격은 {}입니다'.format(self.price))
class Importation:
def __init__(self, country, number):
self.country = country
self.number = number
print('{}국가로부터 수입이 되었습니다.'.format(self.country))
print('통관번호는 {}입니다.'.format(self.number))
Fruit 클래스와 Importation 클래스 정의( 부모 클래스)
class Banana(Fruit, Importation):
def __init__(self,name,taste,color,price, country, number):
Fruit.__init__(self,name,taste,color,price)
Importation.__init__(self,country, number)
Banana 클래스의 정의 클래스를 정의하는데 클래스명옆에 Fruit과 Importation을 명시해 주어 상속을 받았다.
부모 클래스의 생성자를 통하여 초기화를 하였음.
banana1 = Banana('바나나','달콤','노란색','500원','필리핀','592302')
banana 객체 생성
출력 결과
반응형
'IT > 파이썬 기초' 카테고리의 다른 글
[파이썬 기초] 메소드 오버라이딩 (1) | 2023.07.16 |
---|---|
[파이썬 기초] class, 생성자, 멤버변수, 메소드 정리 (0) | 2023.07.08 |
[파이썬 기초] with 문을 이용한 간단한 파일 입출력 (0) | 2023.07.07 |
[파이썬 기초] pickle 이용한 파일 입출력, 데이터 로딩 (0) | 2023.07.06 |
[파이썬 기초] 파일 입출력 (0) | 2023.07.05 |