Книга «Изучаем Python»



Pdf көрінісі
бет94/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   90   91   92   93   94   95   96   97   ...   238
Байланысты:
2 5343781172763690906

my_car.py

from car import Car




178    Глава 9  •  Классы

my_new_car = Car('audi', 'a4', 2016)

print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23

my_new_car.read_odometer()

Команда 


import

 в точке  приказывает Python открыть модуль 

car

 и импорти-



ровать класс 

Car


. Теперь мы можем использовать класс 

Car


 так, как если бы он 

был определен в этом файле. Результат остается тем же, что и в предыдущей 

версии:

2016 Audi A4 

This car has 23 miles on it.

Импортирование классов повышает эффективность программирования. Пред-

ставьте, каким длинным получился бы файл этой программы, если бы в него был 

включен весь класс 

Car

. Перемещая класс в модуль и импортируя этот модуль, 



вы получаете ту же функциональность, но основной файл программы при этом 

остается чистым и удобочитаемым. Бульшая часть логики также может храниться 

в отдельных файлах; когда ваши классы работают так, как положено, вы можете 

забыть об этих файлах и сосредоточиться на высокоуровневой логике основной 

программы.

Хранение нескольких классов в модуле

В одном модуле можно хранить сколько угодно классов, хотя все эти классы долж-

ны быть каким-то образом связаны друг с другом. Оба класса 

Battery

 и 


ElectricCar

 

используются для представления автомобилей, поэтому мы добавим их в модуль 



car .py

:

car.py

"""Классы для представления машин с бензиновым и электродвигателем."""

class Car():

...

class Battery():



"""Простая модель аккумулятора электромобиля."""

def __init__(self, battery_size=60):

"""Инициализация атрибутов аккумулятора."""

self.battery_size = battery_size

def describe_battery(self):

"""Выводит информацию о мощности аккумулятора."""

print("This car has a " + str(self.battery_size) + "-kWh battery.")

def get_range(self):

"""Выводит приблизительный запас хода для аккумулятора."""

if self.battery_size == 70:

range = 240

elif self.battery_size == 85:

range = 270



Импортирование нескольких классов из модуля    179

message = "This car can go approximately " + str(range)

message += " miles on a full charge."

print(message)

class ElectricCar(Car):

"""Представляет аспекты машины, специфические для электромобилей."""

def __init__(self, make, model, year):

"""


Инициализирует атрибуты класса-родителя.

Затем инициализирует атрибуты, специфические для электромобиля.

"""

super().__init__(make, model, year)



self.battery = Battery()

Теперь вы можете создать новый файл с именем 

my_electric_car .py

, импортировать 

класс 

ElectricCar



 и создать новый экземпляр электромобиля:

my_electric_car.py

from car import ElectricCar

my_tesla = ElectricCar('tesla', 'model s', 2016)

print(my_tesla.get_descriptive_name())

my_tesla.battery.describe_battery()

my_tesla.battery.get_range()

Программа выводит тот же результат, что и в предыдущем случае, хотя бульшая 

часть ее логики скрыта в модуле:

2016 Tesla Model S

This car has a 70-kWh battery.

This car can go approximately 240 miles on a full charge.

Импортирование нескольких классов из модуля

В файл программы можно импортировать столько классов, сколько потребуется. 

Если вы захотите создать обычный автомобиль и электромобиль в одном файле, 

потребуется импортировать оба класса

Car


 и 

ElectricCar

:



Достарыңызбен бөлісу:
1   ...   90   91   92   93   94   95   96   97   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет