자식 클래스가 부모 클래스를 상속받아 부모의 기능을 활용할 수 있다.
받은 기능을 같은 메서드 명으로 재정의할 수 있다 (Override)
class 자식클래스명 (부모클래스명):
class Cal:
class Cal:
def __init__(self, b, c) -> None:
print('Cal constructor')
self.b = b;
self.c = c;
variable1 = 'static'
def setDataFunc(self, b, c: int) -> None:
self.b = b
self.c = c
def printFunc(self):
print(self.b)
print(self.c)
def printFunc1(self):
print('Cal 입니다 - ', end='')
print(self.b)
print('Cal 입니다 - ', end='')
print(self.c)
class SubCal(Cal):
def __init__(self, b, c) -> None:
super().__init__(b, c)
print('SubCal constructor')
def printFunc1(self):
# 부모 메서드 호출
super().printFunc1()
print('SubCal 입니다 - ', end='')
print(self.b)
print('SubCal 입니다 - ', end='')
print(self.c)
print(self.variable1)
b = SubCal(42,12)
b.printFunc()
b.printFunc1()
--->
Cal constructor
SubCal constructor
42
12
SubCal 입니다 - 42
SubCal 입니다 - 12
static
* 자식 클래스 객체가 생성되면 부모 클래스 객체가 같이 생성
* 자식 클래스 생성자를 구현하지 않으면, 자동으로 부모 클래스 생성자가 호출되지만, 자식 클래스 생성자를 구현하면 부모 클래스 생성자도 명시적으로 호출 필요.
* super().method 를 이용해서 부모 클래스의 method 호출 가능
- 클래스 변수
객체끼리 서로 공유하는 static 한 변수
객체 변수는 self.변수명을 통해 변수 사용을 하는 반면, 클래스 변수는 클래스명.변수명 을 통해 사용
클래스 변수가 생성된 이후에 self.변수명을 통해 객체 변수를 생성하면 자신의 객체 변수를 바라보게 됨
class Cal:
#클래스 변수
variable1 = 'static'
def setDataFunc(self, variable1) -> None:
self.variable1 = variable1
def printVariable(self):
print(self.variable1)
class SubCal(Cal):
pass
h = Cal()
i = Cal()
l = SubCal()
m = SubCal()
Cal.variable1 = 'shared'
m.setDataFunc('hh')
h.printVariable()
i.printVariable()
l.printVariable()
m.printVariable()
Cal.variable1 = 'shared2'
h.printVariable()
i.printVariable()
l.printVariable()
m.printVariable()
---->
shared
shared
shared
hh
shared2
shared2
shared2
hh
반응형
'Python' 카테고리의 다른 글
[Anaconda] visual studio code 내 interpreter 로 설정하기 (0) | 2023.02.01 |
---|---|
[Anaconda] Anaconda 가상환경 생성 방법 (0) | 2022.01.28 |
[Python] Function Annotation (0) | 2022.01.21 |
[Python] 생성자(Constructor) (0) | 2022.01.20 |
[Python] 클래스 (class) (0) | 2022.01.20 |