class Vehicle():
gas_left_in_the_tank = 0
def init(self, gas_capacity = 30, l_per_100km = 10):
# Конструктор
print('создаётся машина с характеристиками', gas_capacity, l_per_100km)
self.gas_capacity = gas_capacity
self.l_per_100km = l_per_100km
def gas_left(self):
return self.gas_left_in_the_tank
def fill(self, gas_l):
gas_was_left_in_the_tank = self.gas_left_in_the_tank
self.gas_left_in_the_tank += gas_l
how_much_gas_was_really_filled = gas_l # если бак не переполняется
if self.gas_left_in_the_tank > self.gas_capacity:
how_much_gas_was_really_filled = self.gas_capacity - gas_was_left_in_the_tank
self.gas_left_in_the_tank = self.gas_capacity
return how_much_gas_was_really_filled
def max_distance_km(self):
''' Сколько машина может проехать при её количестве топлива
и её расходе
'''
return (self.gas_left_in_the_tank / self.l_per_100km) * 100
def ride(self, distance_km):
how_much_gas_required = distance_km / 100 * self.l_per_100km
if how_much_gas_required <= self.gas_left_in_the_tank:
# Если бензина хватает
travel_distance_km = distance_km
self.gas_left_in_the_tank -= how_much_gas_required
print('Проехали', travel_distance_km, 'км')
else:
# Если бензина не хватает
travel_distance_km = self.max_distance_km()
self.gas_left_in_the_tank = 0
print('Проехали', travel_distance_km, 'км и бензин кончился')
''' Две абсолютно разные машины
'''
car1 = Vehicle(30, 10) # неявный вызов init()
car2 = Vehicle(40, 12)
car3 = Vehicle() # она создала какую-то машину с характеристиками по умолчанию, т.е. конструктор по умолчанию
car4 = Vehicle(car2) # создаём точно такую же машину, как car2, т.е. конструктор копирования
car1.fill(10)
car2.fill(10)
car1.ride(1000)
car2.ride(1000)