728x90
# 상속
공통점이 같은 클래스를 모아놀 수 있습니다. (상속 시키는것)
클래스 이름() : 일때 괄호안에 대표 클래스의 이름을 넣으면 됩니다.
이때 상속시 발생하는 문제는 이름이 같지만 내용이 다른 경우 입니다.
첫번째는 문제로 보겠습니다.
#악기 클래스
class Instrument():
def play(self):
print('악기를 연주합니다')
# 피아노 클래스
class Piano(Instrument):
# play 재정의(override)
def play(self):
print('피아노를 딩동댕')
# 기타 클래스
class Guitar(Instrument):
def play(self):
print('기타를 지지징')
a = Piano()
b = Guitar()
a.play()
b.play()
우선 피아노와 기타 클래스를 만듭니다. 지지징.. 딩동댕..
그리고 피아노와 기타의 공통점은 악기이기 때문에 악기 클래스를 만들어 줍니다. (피아노와 기타클래스를 상속시키기 위해)
그리고 나서 피아노,기타 클래스 괄호안에 악기클래스 이름을 써줍니다.
그리고 나서 a를 피아노 클래스, b를 기타 클래스로 저장해두고 출력을 해보면
피아노를 딩동댕
기타를 지지징
이렇게 출력이 됩니다.
두번째 문제점입니다.
부모(super)클래스에 반드시 데이터가 필요한 경우 입니다. 이때는 하위 클래스가 이를 맞춰야 합니다.
class Phone():
def __init__(self , number):
self.number = number
class IPhone(Phone):
def __init__(self , number):
super().__init__(number) # 부모(super) 클래스에 number를 건네준다
Phone.__init__(self , number) # Phone 클래스에 자신(self)의 정보와 number를 건네준다
class Galaxy(Phone):
def __init__(self , number):
Phone.__init__(self , number)
a = IPhone('010-1212-3434')
b =Galaxy('010-1234-5678')
위의가 예시 입니다. 보면 하위 클래스가 부모(super)클래스에 데이터를 건네주는 것을 확인할 수 있습니다.
728x90
'Python' 카테고리의 다른 글
| Python_19Day (0) | 2019.03.12 |
|---|---|
| Python_18Day (0) | 2019.03.11 |
| Python_16Day (0) | 2019.03.07 |
| Python_15Day (0) | 2019.03.06 |
| Python_14Day (0) | 2019.03.05 |