파이썬(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의 메서드를 사용하여 출력이 잘된것을 확인 하실수 있습니다


    Posted by 서버이야기