Импортирование классов
177
Импортирование
одного класса
Начнем с создания модуля, содержащего только класс
Car
. При этом возникает
неочевидный конфликт имен: в этой главе уже был создан файл с именем
car .py
,
но этот модуль тоже должен называться
car .py
, потому что в нем содержится
код класса
Car
. Мы решим эту проблему, сохранив класс
Car
в модуле с именем
car .py
, заменив им файл
car .py
, который использовался ранее. В дальнейшем
любой программе, использующей этот модуль, придется присвоить более кон-
кретное имя файла — например,
my_car .py
. Ниже приведен файл
car .py
с кодом
класса
Car
:
car.py
"""Класс для представления автомобиля."""
class Car():
"""Простая модель автомобиля."""
def __init__(self, make, model, year):
"""Инициализирует атрибуты описания автомобиля."""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""Возвращает аккуратно отформатированное описание."""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""Выводит пробег машины в милях."""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""
Устанавливает на одометре заданное значение.
При попытке обратной подкрутки изменение отклоняется.
"""
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