제로베이스 데이터 취업 스쿨 1주차 스터디노트 5호
class Car:
def __init__(self, color="Black"):
self.color = color
def move(distance):
print(f"moved {distance}m")
my_car = Car("Red")
my_car.move(50) # moved 50m
차를 만들고, 몇 미터 이동했다고 주장할 수 있다.
하지만 50m 이동했다고 주장하려면,
땅바닥이 있어야 주장할 수 있지 않을까?
그러니 땅바닥을 만들어보도록 하겠다.
여러가지 종류의 도로가 있을 수 있으니,
도로의 설계도에 대한 설계도(?)를 만들어보자.
그리고 이 설계도는, 이후 도로의 설계도에는 어떤 것이 포함되어야 하는지 명시한다.
그것이 check_car_allowed
메소드이다.
from abc import *
class Path(metaclass=ABCMeta):
@abstractmethod
def check_car_allowed(self): # 자동차가 달려도 되는 도로인지?
pass
인도와 자동차도로는 둘 다 도로라는 개념을 상속받는다고 할 수 있다.
앞의 도로라는 class를 상속받는데, 모두 check_car_allowed라는 메소드 구현을 해야 한다.
앞의 도로라는 개념으로 인도를 만들 수 있다.
class Sidewalk(Path):
def __init__(self):
self.humans = {}
def check_car_allowed(self):
return False
new_sidewalk = Sidewalk()
자동차 도로 또한 만들 수 있다.
class CarRoad(Path):
def __init__(self):
self.cars = {}
def check_car_allowed(self):
return True
new_car_road = CarRoad()