super() function은 parent class (부모 클래스)의 method를 접근하여 활용하려고 사용한다. Parent class의 임시 object를 return한다.
class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
def rec_area(self):
return self.length * self.width
class Square(Rectangle): #안에 무엇을 상속할지 고른다
def __init__(self, length, width):
super().__init__(length, width)
def area(self):
return self.length * self.width
class Cube(Rectangle): #rectangle을 상속했다
def __init__(self, length, width, height):
super().__init__(length, width)
self.height = height
def surface_area(self):
one_area = super().rec_area()
return one_area * 6
def volume(self):
return self.length*self.width*self.height
square = Square(3,3)
cube = Cube(3,3,3)
print(square.area()) # 9
print(cube.volume()) # 27
print(cube.surface_area()) # 54
Rectangle의 parent class를 square과 cube가 상속을 받아서 length와 width를 공유한다. 또한 cube도 rectangle class를 상속받았기에 안에 있는 surface_area 함수는 rectangle의 rec_area의 function을 사용한다.
만약에 class Cube(Square): 이였다면 def area를 super.area()로 상속받아서 사용할 수 있다.