Skip to content

Instantly share code, notes, and snippets.

@angusbarnes
Created July 14, 2018 23:48
Show Gist options
  • Select an option

  • Save angusbarnes/c86c5aca2b07390c8adcba59eebdee43 to your computer and use it in GitHub Desktop.

Select an option

Save angusbarnes/c86c5aca2b07390c8adcba59eebdee43 to your computer and use it in GitHub Desktop.
class VehicleSize(Enum):
MOTORCYCLE = 0
COMPACT = 1
LARGE = 2
class Vehicle(metaclass=ABCMeta):
def __init__(self, vehicle_size, license_plate, spot_size):
self.vehicle_size = vehicle_size
self.license_plate = license_plate
self.spot_size
self.spots_taken = []
def clear_spots(self):
for spot in self.spots_taken:
spot.remove_vehicle(self)
self.spots_taken = []
def take_spot(self, spot):
self.spots_taken.append(spot)
@abstractmethod
def can_fit_in_spot(self, spot):
pass
class Motorcycle(Vehicle):
def __init__(self, license_plate):
super(Motorcycle, self).__init__(VehicleSize.MOTORCYCLE, license_plate, spot_size=1)
def can_fit_in_spot(self, spot):
return True
class Car(Vehicle):
def __init__(self, license_plate):
super(Car, self).__init__(VehicleSize.COMPACT, license_plate, spot_size=1)
def can_fit_in_spot(self, spot):
return spot.size in (VehicleSize.LARGE, VehicleSize.COMPACT)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment