하위 클래스
는 또 다른 클래스상위 클래스
를 상속해서 내 기능처럼 사용할 수 있다.# MyExceptionClass는 Exception 클래스를 상속함
def MyExceptionClass(Exception):
myCal = Calculator()
을 통해 Calculator()를 호출,Calculator.__init__():
메소드를 자동 호출# 클래스 외부에서 객체 생성하며 속성 초기화
class Calculator:
def __init__(self, n1, n2):
print('Calculator called!')
self.num1 = n1
self.num2 = n2
myCal = Calculator(10, 20)
print(f'{myCal.num1}, {myCal.num2}') # 초기화 됐는지 확인
# 클래스 내부에서 속성값 고정 할당, 이 경우 객체가 새로 생성될 때마다 초기화됨
class Calculator:
def __init__(self):
print('Calculator called!')
self.num1 = 10
self.num2 = 100
myCal = Calculator()
print(f'{myCal.num1}, {myCal.num2}') # 초기화 됐는지 확인
# 섞는 것도 가능
class Calculator:
def __init__(self, n):
print('Calculator called!')
self.num1 = n
self.num2 = 50
myCal = Calculator(30)
print(f'{myCal.num1}, {myCal.num2}')
<result>
Calculator called!
10, 20
Calculator called!
10, 100
Calculator called!
30, 50
super().
상속 클래스의 속성을 초기화할 때 사용self
안 적음!class C_Class(P_Class):
def __init__(self, cNum1, cNum2):
print('C_Class __init__ called!')
# 방법1
P_Class.__init__(self, cNum1, cNum2)
# 방법2
super().__init__(cNum1, cNum2) # 클래스 내 def 마다 넣어줘야 함
class myCal(BasicCal, DevCal):
def __init__(self):
pass
class TriangleArea:
def __init__(self, n1, n2):
self.width = n1
self.height = n2
def printTriangleAreaInfo(self):
print(f'width: {self.width}')
print(f'height: {self.height}')
def getArea(self):
result = self.width * self.height / 2
return result
class NewTriangleArea(TriangleArea):
def __init__(self, n1, n2):
super().__init__(n1, n2)
# 여기서 오버라이딩. 단, 연산식이 같으므로 단위만 추가(str로 캐스팅)
def getArea(self):
# super()로 위로 올라가서, getArea()가져온 다음 문자열로 변환해서 더하기
return str(super().getArea()) + '㎠'
ta = NewTriangleArea(7, 5)
ta.printTriangleAreaInfo()
triangleArea = ta.getArea()
print(f'TriangleArea: {triangleArea}')
<result>
width: 7
height: 5
TriangleArea: 17.5㎠
from abc import ABCMeta
from abc import abstractmethod
# 추상클래스에 metaclass=ABCMeta 삽입
#예를 들어,
class AirPlane(metaclass=ABCMeta):
# 강요하고자 하는 메소드에 @abstractmethod를 붙임
@abstractmethod
def flightSpeed(): #클래스를 상속받긴 하지만, 각각 알아서 써야 하는 경우 발생
pass