15. Python - 다중상속
2021. 2. 23. 17:52
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # 다중상속 # Java - 공식적으로 불가능(interface로 흉내만 냄) # Python - 가능 # Python # 생성자가 상속됨 # 다중 상속 가능 # overloading 안됨 # 이름 중복 시 -> 먼저 받은걸로 선택 class Avengers: def __init__(self, realName): self.realName = realName def attack(self): print("공격") def printInfo(self): print(self.realName) class Human: def __init__(self, age): self.age = age def eat(self): print("냠") def attack(self): print("그냥 주먹질") def printInfo(self): print(self.age) # Python 다중상속 # 상속 받은게 중복 될 경우 파라메터상 앞에 있는걸 선택한다 # 직접 상속받는 클래스 명.매소드 명으로 선택해야한다. class IronMan(Avengers, Human): # 아이언맨의 생성자는 현재 다중상속 되어있지만 # 앞에 있는 Avengers의 생성자를 상속받게 되기 때문에 # Human 생성자에 있는 name은 없다. def __init__(self, realName, age): # 각각 Avengers와 Human의 생성자를 불러와 줘야 name과 age 멤버변수를 가지게 된다. Avengers.__init__(self, realName) Human.__init__(self, age) def attack(self): # 클래스명.매소드명으로 정확하게 지정 Avengers.attack(self) Human.attack(self) def printInfo(self): Avengers.printInfo(self) Human.printInfo(self) if __name__ == '__main__': i = IronMan("토니", 40) i.attack() i.eat() i.printInfo() | cs |
'Python' 카테고리의 다른 글
17. Python - XML Parsing1 (0) | 2021.02.24 |
---|---|
16. Python - Exception (0) | 2021.02.24 |
14. Python - 상속, overriding (0) | 2021.02.23 |
13. Python - import2, if __name__ == "__main__": (0) | 2021.02.23 |
12. Python - import_1 (0) | 2021.02.23 |