본문 바로가기
Aiffel/Fundamental

Class 상속

by EDGE-AI 2022. 1. 10.
class Car:
    Manufacture = "India"

    def __init__(self, color='red', category='sedan'):
        self.color = color
        self.category = category

    def drive(self):
        print("I'm driving")

    def accel(self, speed_up, current_speed=10):
        self.speed_up = speed_up
        self.current_speed = current_speed + self.speed_up
        print("speed up", self.speed_up, "driving at", self.current_speed)
class NewCar(Car):
    pass

car = NewCar()
car.drive()
car.accel(10)

>>>
I'm driving
speed up 10 driving at 20

새로운 클래스에 기존 클래스를 상속시켜 주는 경우 새로운 클래스에 아무런 코딩을 하지 않아도 기능을 사용 가능하다.

 

class NewCar(Car):
    maker = 'Porsche'

car = NewCar()
car.maker

>>>
'Porsche'
  • 상속받은 class : 자식 class, sub classm derived class
  • 기존 class : 부모 class, super class, base class

Method 추가하기

자식 class에 새로운 method 추가(super class에 없던 method 정의)

Method Override

super class에 있는 method를 sub class에서는 새롭게 정의하기 위함

부모 method 호출하기 super()

class C(B):
    def method(self, arg):
        super().method(arg)
        
        
        
def (부모클래스의)메서드이름():
	super().메서드이름()

상속받은 class에서 현재 인자 1개를 모두 다른 형태로 받고자 할 때, override를 사용하면 모든 상속받은 클래스에서 init를 진행해줘야 하기 때문에 이를 방지하기 위함.

class NewCar(Car):
    def __init__(self, color, category, maker):
        super().__init__(color, category)
        self.maker = maker

 

 

참고문헌

https://docs.python.org/3.8/tutorial/classes.html

https://docs.python.org/3/library/functions.html#super

'Aiffel > Fundamental' 카테고리의 다른 글

활성화 함수 (Activation Function)  (0) 2022.01.21
Parameter, HyperParameter  (0) 2022.01.18
클래스 변수와 인스턴스 변수  (0) 2022.01.10
생성자 __init__  (0) 2022.01.10
객체 지향 프로그래밍  (0) 2022.01.10

댓글