# 클래스(자동차)
class Car:
def __init__(self, name, color, speed):
self.name = name # 속성(이름)
self.color = color # 속성(색상)
self.speed = speed # 속성(속도)
def start_up(self):
print(f"{self.name}의 시동이 켜졌습니다.") # 기능(시동켜짐)
my_car = Car("티코", "빨간색", "30km/h") # 객체 생성
print("차 이름:", my_car.name)
print("차 색상:", my_car.color)
print("차 속도:", my_car.speed)
my_car.start_up()
# 출력예시
# 차 이름: 티코
# 차 색상: 빨간색
# 차 속도: 30km/h
# 티코의 시동이 켜졌습니다.
# 부모 클래스
class Car:
def __init__(self, name, color, speed):
self.name = name
self.color = color
self.speed = speed
def start_up(self):
print(f"{self.name}의 시동이 켜졌습니다.")
# 자식 클래스
class Bus(Car):
def __init__(self, name, color, speed, max_people):
# 부모 클래스 속성 초기화
super().__init__(name, color, speed)
# 자식 클래스 전용 속성 정의
self.max_people = max_people
# 자식 클래스 전용 기능 정의
def start_pay(self):
print(f"{self.name}의 결제시스템이 켜졌습니다.")
my_bus = Bus("마을버스", "노랑색", "30km/h", "45인승")
print("버스 이름:", my_bus.name)
print("버스 색상:", my_bus.color)
print("버스 속도:", my_bus.speed)
print("버스 인원:", my_bus.max_people) # 자식 클래스 전용 속성
my_bus.start_up()
my_bus.start_pay() # 자식 클래스 전용 기능
# 출력예시
# 버스 이름: 마을버스
# 버스 색상: 노랑색
# 버스 속도: 30km/h
# 버스 인원: 45인승
# 마을버스의 시동이 켜졌습니다.
# 마을버스의 결제시스템이 켜졌습니다.
# 부모 클래스
class Car:
def __init__(self, name, color, speed):
self.name = name
self.color = color
self.speed = speed
def start_up(self):
print(f"{self.name}의 시동이 켜졌습니다.")
# 자식 클래스
class Bus(Car):
def start_up(self): # 오버라이딩
super().start_up()
print(f"{self.name}의 위성통신 기능도 정상입니다.")
my_bus = Bus("마을버스", "노랑색", "30km/h")
print("버스 이름:", my_bus.name)
print("버스 색상:", my_bus.color)
print("버스 속도:", my_bus.speed)
my_bus.start_up()
# 출력예시
# 버스 이름: 마을버스
# 버스 색상: 노랑색
# 버스 속도: 30km/h
# 마을버스의 시동이 켜졌습니다.
# 마을버스의 위성통신 기능도 정상입니다.
# 추상메소드 미정의 후 사용 시 TypeError 발생
from abc import *
# 부모클래스
class Car(metaclass=ABCMeta): # 추상클래스 지정
def __init__(self, name, color, speed):
self.name = name
self.color = color
self.speed = speed
@abstractmethod # 추상메소드 지정
def start_up(self):
pass
# 자식클래스
class Bus(Car):
pass # 추상메소드 미정의 상태
my_bus = Bus("마을버스", "노랑색", "30km/h")
print("버스 이름:", my_bus.name)
print("버스 색상:", my_bus.color)
print("버스 속도:", my_bus.speed)
my_bus.start_up()
# 출력 예시
# TypeError: Can't instantiate abstract class Bus with abstract method start_up
# 올바른 예시
from abc import *
# 부모클래스
class Car(metaclass=ABCMeta): # 추상클래스 지정
def __init__(self, name, color, speed):
self.name = name
self.color = color
self.speed = speed
@abstractmethod
def start_up(self): # 추상메소드 지정
pass
# 자식클래스
class Bus(Car):
def start_up(self): # 추상메소드 재정의
print(f"{self.name}의 시동이 켜졌습니다.")
my_bus = Bus("마을버스", "노랑색", "30km/h")
print("버스 이름:", my_bus.name)
print("버스 색상:", my_bus.color)
print("버스 속도:", my_bus.speed)
my_bus.start_up()
# 출력예시
# 버스 이름: 마을버스
# 버스 색상: 노랑색
# 버스 속도: 30km/h
# 마을버스의 시동이 켜졌습니다.
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.