파이썬(Python) - 다중 상속
파이썬(Python) - 다중 상속 알아보기
이번 포스팅에서는 다중상속에 대해 알아보겠습니다
관련글 :
Python(파이썬) - 객체(Object) - http://server-talk.tistory.com/210
Python(파이썬) - 객체제작 - http://server-talk.tistory.com/212
Python(파이썬) - Class(클레스)와 생성자 - http://server-talk.tistory.com/211
Python(파이썬) - 인스턴스 변수와 메서드 - http://server-talk.tistory.com/213
Python(파이썬) - 상속 - http://server-talk.tistory.com/214
Python(파이썬) - 클래스 메서드 - http://server-talk.tistory.com/216
Python(파이썬) - 객체와 변수 알아보기 - http://server-talk.tistory.com/217
파이썬(Python) - 다중상속 이란? |
기존 상속 포스팅에서 부모 클래스로부터 자식 클래스에게 상속하였던 부분이 있었습니다
위 그림처럼 다중 상속을 하게 되면 자식 클래스는 여러 부모 클래스로부터 상속받아 기능을 사용할 수 있게 됩니다.
파이썬(Python) - 다중상속 사용 해보기 |
다중 상속을 사용하기 위한 간단한 예제부터 살펴보겠습니다
class M1(): def m1_m(self): print("m1_m") class M2(): def m2_m(self): print("m2_m") class M3(M1, M2): pass c = M3() c.m1_m() c.m2_m()
위 코드는 다중 상속을 하기 위한 3개의 클래스(M1, M2, M3)를 만들었으며, M3의 클래스의 M1, M2의 클래스를 상소하였습니다
다중 상속의 사용방법은 클래스 옆 괄호 안에 상속하고자 할 클래스를 ,(콤마) 로 구분하여 넣어주시면 됩니다
다중상속 사용방법
calss 클래스명(상속할 클래스):
파이썬(Python) - 다중 상속 응용하기 |
class Calc(object): _history = [] def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def sum(self): result = self.num1 + self.num2 Calc._history.append("add : "+str(result)) return self.num1 + self.num2 def sub(self): result = self.num1 - self.num2 Calc._history.append("sub : "+str(result)) return self.num1 - self.num2 @classmethod def history(cls): for item in Calc._history: print(item) class Ref(object): def multi(self): result = self.num1 * self.num2 Calc._history.append("multi : "+str(result)) return self.num1 * self.num2 class Calc_Ref(Calc, Ref): def devide(self): result = self.num1 / self.num2 Calc._history.append("devide : "+str(result)) return self.num1 / self.num2 C3 = Calc_Ref(20,10) print(C3.sum()) print(C3.sub()) print(C3.multi()) print(C3.devide()) Calc.history()
위 코드는 Calc_Ref 클래스를 추가하였으며, Calc_Ref 클래스에 Calc와 Ref 클래스를 다중 상속한의 코드입니다 출력결과를 확인 하시면 Calc_Ref 클래스의 인스턴스가 있는 C3를 담은 C3의 메서드를 사용하여 출력이 잘된것을 확인 하실수 있습니다