1 상속
상속받고자 하는 클래스로부터 멤버 필드를 물려받는 기능을 한다.
기본 클래스로부터 기능을 물려받아서 새로운 클래스를 작성할 수 있게 한다.
class 클래스명(상속받을 클래스명):
기본클래스와 상속된 클래스를 다음과 같이 호칭한다.
부모클래스, 자식클래스
기본클래스, 파생클래스
상위클래스, 하위클래스
부모클래스의 멤버를 물려받는다.
따라서 부모클래스의 멤버의 개수보다 자식클래스의 멤버의 개수가 더 적을 수 없다.
2 다중 상속
클래스들끼리 여러개를 상속 받을 수 있다.
class 클래스명(상위클래스1, 상위클래스2, ...)
다중상속을 받을 경우 상속받은 모든 기반 클래스의 기능을 상속받는다.
Ex 예제
# 다음 클래스의 상속을 이용하여 캐릭터 클래스를 만들어보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# 기본 캐릭터(부모클래스) class Character: def __init__(self,id1="무명씨",hp=0,mp=0): # 매개변수 id1, hp,mp를 초기화 self.id1 = id1 self.hp = hp self.mp = mp
def info(self): print("id",self.id1) print("hp",self.hp) print("mp",self.mp)
def at(self): print("기본공격")
# 전사 (자식클래스) class Warrior(Character): pass
# 마법사(자식클래스) class Wizard(Character): pass
# 궁수(자식클래스) class Archer(Character): pass
# 몬스터(자식클래스) class Monster(Character): pass
# 전사 객체 생성 w1 = Warrior("오빠") w1.at()
# 몬스터 객체 생성 m1 = Monster("오크",100,100) m1.info() |
cs |
기본공격
id 오크
hp 100
mp 100
위처럼 Character 클래스를 상속받는 캐릭터 클래스를 여러개 만들어 주었다.
그리고 줄33에서 Warrior 객체에 인수를 id1값만 담아주었다. 이는 줄3에서 id1, hp, mp를 초기화해 주었기 때문에 hp, mp 값을 입력해 주지 않아도 자동으로 초기화된 값으로 세팅된다.
또한 Character 클래스로부터 메서드를 상속받아 줄37에 캐릭터의 id1, hp, mp 값을 입력받은 것을 볼 수 있다. 그리고 info() 메서드를 통해 몬스터 클래스의 정보를 출력해 주었다.
# 평균 클래스
# 평균 내는 기능
# 총점 클래스
# 총점 저장 변수
# 총점 계산 기능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class Avg: def __init__(self): # 기본 생성자 self.avg = 0
def average(self,total): self.avg = self.total/3 print("평균",self.avg)
class Total(Avg): def total(self,kor,math,eng): self.kor = kor self.math = math self.eng = eng self.total = kor+math+eng
self.average(self.total)
person1 = Total() person1.total(92,92,92) person2 = Total() person2.total(86,75,83) |
cs |
평균 92.0
평균 81.33333333333333
# 교수, 어린이, 학생
# 사람-> 먹기, 놀기, 자기 기능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 기본클래스(부모클래스) class Person: def __init__(self,name,age,job): self.name = name self.age = age self.job = job
def eat(self): print(self.name,"님이 먹는다.") def sleep(self): print(self.name,"님이 잔다.") def play(self): print(self.name,"님이 논다.")
def __del(self): print("객체가 소멸합니다.")
class Child(Person): pass class Students(Person): pass class Professor(Person): pass |
cs |
# 다중 상속을 이용한 신용카드 클래스
# 신용카드
# 놀이동산 50% , 영화 몇회 무료 , 쇼핑 5%할인 , 교통카드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
class Trans_Card: # 교통카드 pass
class Shopping: # 쇼핑 pass
class Movie: # 영화무료 pass
class Park: #놀이동산 할인 pass
class Card: def __init__(self,name,pw,num): self.name = name self.pw = pw self.number = num print("카드생성완료")
# 삼성카드 -> 쇼핑,교통 class Samsung_Card(Card,Shopping,Trans_Card): pass # 롯데카드 -> 영화 class Lotte_Card(Card,Movie): pass # KB카드 class Kb_Card(Card): pass |
cs |
'Python' 카테고리의 다른 글
[Python 기초] 파이썬 예외처리 - finally , raise , StopIteration 에러 (0) | 2021.04.03 |
---|---|
[Python 기초] 파이썬 예외처리(try~ except) / 예외처리 클래스 (Exception) (0) | 2021.04.03 |
[Python 기초] 파이썬 클래스 - 생성자와 소멸자 (Constructor and Destructor) (0) | 2021.04.03 |
[Python 기초] 파이썬 클래스(class)와 인스턴스(instance) (0) | 2021.04.02 |
[Python 기초] 파이썬 함수(Funtion) - 사용자 정의 함수 - 2 (0) | 2021.04.02 |
댓글