Глава 9 • Классы
"""
Устанавливает на одометре заданное значение.
При попытке обратной подкрутки изменение отклоняется.
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
"""Увеличивает показания одометра с заданным приращением."""
self.odometer_reading += miles
В точке
включается строка документации уровня модуля с кратким описанием
содержимого модуля. Пишите строки документации для каждого созданного вами
модуля.
Теперь мы создадим отдельный файл с именем
my_car .py
. Этот файл импортирует
класс
Car
и создает экземпляр этого класса:
my_car.py ❶
from car import Car
my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
Команда
import
в точке
приказывает Python открыть модуль
car
и импортиро-
вать класс
Car
. Теперь мы можем использовать класс
Car
так, как если бы он был
определен в этом файле. Результат остается тем же, что и в предыдущей версии:
2019 Audi A4
This car has 23 miles on it.
Импортирование классов повышает эффективность программирования. Пред-
ставьте, каким длинным получился бы файл этой программы, если бы в него был
включен весь класс
Car
. Перемещая класс в модуль и импортируя этот модуль,
вы получаете ту же функциональность, но основной файл программы при этом
остается чистым и удобочитаемым. Большая часть логики также может храниться
в отдельных файлах; когда ваши классы работают так, как положено, вы можете
забыть об этих файлах и сосредоточиться на высокоуровневой логике основной
программы.
Хранение нескольких классов в модуле
В одном модуле можно хранить сколько угодно классов, хотя все эти классы
должны быть каким-то образом связаны друг с другом. Оба класса,
Battery