[Python] 부모 클래스의 함수를 사용하기(오버라이드)

hugingstar·2022년 7월 7일
0
post-thumbnail

여러가지 알고리즘을 만들다보면 먼저 개발이 완료된 클래스의 함수 값을 가져와서 사용해야 되는 경우가 있다.
간단한 예제를 사용해서 연습하면 빠르게 오버라이드를 이해할 수 있다.

1. 오버라이드

  • Optimal 클래스는 Multi 클래스의 부모 클래스이다.
  • Multi 클래스는 Optimal 클래스의 자식 클래스이다.
    (클래스를 선언할 때 Optimal 객체를 받는 것을 확인할 수 있다.)
  • 문제는 그런데 sum이라는 함수가 부모에도 있고 자식에도 있다.
  • 아래에서 Multi라는 클래스에 입력 값을 넣고 실행을 시킨 것을 보면 (20, 10 값을 입력) Multi안에 있는 결과가 출력된다.
  • super().sum() 모듈을 안에서 사용하면 부모 클래스의 결과를 가져올 수 있다.
class Optimal(object):
    #  Optimal 클래스는 Multi 클래스의 부모 클래스이다.
    def __init__(self, MainBody, Adjusted):
        self.MainBody = MainBody
        self.Adjusted = Adjusted
    def sum(self):
        result = self.MainBody + self.Adjusted
        return result

class Multi(Optimal):
    # Multi 클래스는 Optimal 클래스의 자식 클래스이다.
    def sum(self):
        result = self.MainBody - self.Adjusted
        return "Multi.sum : {} , Optimal.sum : {} " .format(result, super().sum())

C2 = Multi(20, 10)
print(C2.sum())

결과를 보면 바로 오버라이드 이해가 될 것이다. (요약하면, super().sum()으로 자식 클래스의 메소드를 무효화할 수 있다.)

0개의 댓글