더 설득력 있게 자동차를 만들었다고 주장하기 위해 도로를 만들어보자

I'm Cape·2023년 5월 8일
0

제로베이스 데이터 취업 스쿨 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()
profile
Impact

0개의 댓글