반응형
목차
[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__()
반응형
'파이썬(Python) > 문법' 카테고리의 다른 글
[Python] 내장 함수란? 확인 방법 (아래 밑줄 2개, underscore, __init__, __repr__) (0) | 2022.09.28 |
---|---|
[Python] 멀티스레딩과 Global 변수 공유 방법(Multi threading, thread) (0) | 2022.07.01 |
[Python] 멀티스레드란? 사용법, 예제 (Multi thread, target, args, start, join) (0) | 2022.06.30 |
[Python] 멀티프로세스, 변수 교환 방법(Queue, Pipe, Multiprocess, Multitask, 파이썬)#2 (0) | 2022.06.29 |
[Python] 멀티프로세스, 동시 작업(Multiprocess, Multitask, 파이썬) #1 (0) | 2022.06.28 |