Python(파이썬) - Override 알아보기




    이번 포스팅에서는 Override 기능의 대해서 알아보겠습니다


    관련글 :


    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(파이썬) - Override 란?



    Overrride 란? 재정의 한다고 하며, 부모 클래스에서 정의한 메서드를 자식 클래스에서 변경하는 것입니다




    위 그림을 보시면 Multi 클래스를 보시면 Multi 클래스는 Calc 클래스에서 기능을 상속받았습니다

    즉 상속받은 Multi 클래스는 Calc의 기능을 모두 사용하게 됩니다




    그러나 Override를 하게되면 부모클래스를 사용하지 않고  상속받은 Multi 클래스에서 메서드를 재정의 하여 사용할수 있게 됩니다







     Python(파이썬) - Override 사용 해보기




    class Calc(object):
        def __init__(self, num1, num2):
            self.num1 = num1
            self.num2 = num2
        def sum(self):
            result = self.num1 + self.num2
            return result
    
    class Multi(Calc):
        def sum(self):
            result = self.num1 - self.num2
            return result
    
    C2 = Multi(20,10)
    print(C2.sum())
    


    위 코드는 출력함수(print) 부분부터 보시면 C2의 메서드(sum)을 호출하면 Multi 클래스를 실행하게 되며, Calc 클래스를 상속받았지만 Multi클래스의 재정의된 sum 메서드를 사용한 결괏값이 출력됩니다


    하지만 이러한 방법을 이용하면 상속받은 Calc 클래스의 기능을 사용하지 못하게되는 경우가 발생하게 됩니다




    class Calc(object):
        def __init__(self, num1, num2):
            self.num1 = num1
            self.num2 = num2
        def sum(self):
            result = self.num1 + self.num2
            return result
    
    class Multi(Calc):
        def sum(self):
            result = self.num1 - self.num2
            return "Multi -> %d , Calc -> %d " % (result, super().sum())
    
    C2 = Multi(20,10)
    print(C2.sum())
    



    위 코드의 Multi 클래스 sum 메서드의 리턴값을 보시면 super().sum() 메서드가 있습니다

    super() 를 사용하면 부모 클래스의 메서드를 호출할수 있습니다

    출력결과를 보시면 잘출력되는것을 확인하실 수 있습니다


    Posted by Server-talk 서버이야기