파이썬(Python)/문법

[Python] 파이썬 클래스 상속과 Super 사용 방법(Class)

끄적끄적아무거나 2022. 11. 23. 09:48
반응형

 

목차

     

     

     

     

    [Python] 파이썬 클래스 상속과 Super이란?

     

    파이썬은 클래스(Class)간에 상속이 가능 합니다. 부모 클래스를 상속 받은 자식 클래스는 부모 클래스의 메소도(Method)를 사용할 수 있게 됩니다. super 함수는 자식 클래스와 객체 값을 받아서 부모 클래스의 함수에 접근하는 방식 입니다.

     

    아래 예제를 통해 쉽게 이해해 보도록 하겠습니다. 

     

    예제 코드>>

    class F():
        def __init__(self):
            print("Father")
            
        def how_old(self):
            print("I'm 55")
    
    class S(F):
        def __init__(self):
            print("Son")
            
        def who(self):
            print("I'm Son")     
    
    a_var = S()
    a_var.how_old()
    a_var.who()
    super(S, a_var).__init__()
    super(S, a_var).how_old()

    1~6번 라인: 부모 클래스 F 선언

    8~13번 라인: 자식 클래스 S 선언

    15번 라인: 클래스 S 객체 선언

    16번 라인: 상속 받은 F의 함수 how_old를 사용

    18~19번 라인: 부모 클래스의 함수를 super 함수로 사용

     

     

    결과>>

    Son
    I'm 55
    I'm Son
    Father
    I'm 55

     

     

    위와 같이 super 함수를 사용해서 부모 함수에 접근이 가능 합니다.

     

     

     

     

     

    실제로 프로그래밍 중에 super 를 주로 사용하는 경우는 아래와 같습니다.

     

    예제 코드>>

    class F():
        def __init__(self):
            print("Father")
            
        def how_old(self):
            print("I'm 55")
    
    class S(F):
        def __init__(self):
            super(S, self).__init__()
            print("Son")
            
        def who(self):
            print("I'm Son")     
    
    a_var = S()

    결과>>

    Father
    Son

     

     

     

    위에서 11번째 라인의 super(S, self).__init__() 는 일반적으로 외부 라이브러리를 사용할 때 해당 init 값을 가져와서 같이 사용할 때 이용 합니다.

     

     

     

    일반적인 예로 PySide 나 PyQt와 같은 GUI 라이브러리를 선언할 때 아래처럼 초기에 기본값으로 선언하게 만들어서 사용 합니다. 

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton
    
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()

     

     

    반응형