python의 super()이 뭘까?

잠만보 석사생·2022년 7월 15일
0

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()로 상속받아서 사용할 수 있다.

profile
생명공학을 전공했지만 AI에 관심있는 사람

0개의 댓글