М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения


УПРАЖНЕНИЯ 9.6. Киоск с мороженым



Pdf көрінісі
бет133/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   129   130   131   132   133   134   135   136   ...   334
Байланысты:
Изучаем Python

УПРАЖНЕНИЯ
9.6. Киоск с мороженым:
киоск с мороженым — особая разновидность ресторана. Напиши-
те класс IceCreamStand, наследующий от класса Restaurant из упражнения 9.1 (с. 175) или 
упражнения 9.4 (с. 180). Подойдет любая версия класса; просто выберите ту, которая вам 
больше нравится. Добавьте атрибут с именем 
flavors
для хранения списка сортов мороже-
ного. Напишите метод, который выводит этот список. Создайте экземпляр 
IceCreamStand
и вызовите этот метод.
9.7. Администратор:
администратор — особая разновидность пользователя. Напишите 
класс с именем Admin, наследующий от класса 
User
из упражнения 9.3 или упражнения 9.5 
(с. 180). Добавьте атрибут 
privileges
для хранения списка строк вида 
"разрешено
добавлять
сообщения"

"разрешено
удалять
пользователей"

"разрешено
банить
пользователей"
и т. д. На-
пишите метод 
show_privileges()
для вывода набора привилегий администратора. Создай-
те экземпляр 
Admin
и вызовите свой метод.
9.8. Привилегии:
напишите класс 
Privileges
. Класс должен содержать всего один атри-
бут 
privileges
со списком строк из упражнения 9.7. Переместите метод 
show_privileges()
в этот класс. Создайте экземпляр 
Privileges
как атрибут класса 
Admin
. Создайте новый эк-
земпляр 
Admin
и используйте свой метод для вывода списка привилегий.


Импортирование классов
187
9.9. Обновление аккумулятора:
используйте окончательную версию программы 
electric_
car .py
из этого раздела. Добавьте в класс 
Battery
метод с именем 
upgrade_battery()
. Этот 
метод должен проверять размер аккумулятора и устанавливать мощность равной 100, если 
она имеет другое значение. Создайте экземпляр электромобиля с аккумулятором по умол-
чанию, вызовите 
get_range()
, а затем вызовите 
get_range()
во второй раз после вызова 
upgrade_battery()
. Убедитесь в том, что запас хода увеличился.
Импортирование классов
С добавлением новой функциональности в классы файлы могут стать слишком 
длинными, даже при правильном использовании наследования. В соответствии 
с общей философией Python файлы не должны загромождаться лишними подроб-
ностями. Для этого Python позволяет хранить классы в модулях и импортировать 
нужные классы в основную программу.
Импортирование одного класса
Начнем с создания модуля, содержащего только класс 
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 = f"{self.year} {self.manufacturer} {self.model}"
return long_name.title()
def read_odometer(self):
"""Выводит пробег машины в милях."""
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self, mileage):


188

Достарыңызбен бөлісу:
1   ...   129   130   131   132   133   134   135   136   ...   334




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

    Басты бет