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
참고문헌
'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 |
댓글