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



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

УПРАЖНЕНИЯ

9-6 . Киоск с мороженым: киоск с мороженым — особая разновидность ресторана . Напишите 

класс  IceCreamStand,  наследующий  от  класса  Restaurant  из  упражнения  9-1  (с .  165)  или 

упражнения 9-4 (с . 169) . Подойдет любая версия класса; просто выберите ту, которая вам 

больше нравится . Добавьте атрибут с именем flavors для хранения списка сортов мороже-

ного . Напишите метод, который выводит этот список . Создайте экземпляр IceCreamStand 

и вызовите этот метод .

9-7 . Администратор: администратор — особая разновидность пользователя . Напишите 

класс  с  именем  Admin,  наследующий  от  класса  User  из  упражнения  9-3  (с .  165)  или 

упражнения 9-5 (с . 170) . Добавьте атрибут privileges для хранения списка строк вида 

«разрешено добавлять сообщения», «разрешено удалять пользователей», «разрешено 

банить  пользователей»  и  т .  д .  Напишите  метод  show_privileges()  для  вывода  набора 

привилегий администратора . Создайте экземпляр Admin и вызовите свой метод .

9-8 . Привилегии: напишите класс Privileges . Класс должен содержать всего один атрибут 

privileges со списком строк из упражнения 9-7 . Переместите метод show_privileges() в этот 

класс . Создайте экземпляр Privileges как атрибут класса Admin . Создайте новый экземпляр 

Admin и используйте свой метод для вывода списка привилегий .

9-9 .  Обновление  аккумулятора:  используйте  окончательную  версию  программы 

electric_car .py из этого раздела . Добавьте в класс Battery метод с именем upgrade_battery() . 

Этот метод должен проверять размер аккумулятора и устанавливать мощность равной 85, 

если  она  имеет  другое  значение .  Создайте  экземпляр  электромобиля  с  аккумулятором 

по  умолчанию,  вызовите  get_range(),  а  затем  вызовите  get_range()  во  второй  раз  после 

вызова upgrade_battery() . Убедитесь в том, что запас хода увеличился .

Импортирование классов

С добавлением новой функциональности в классы файлы могут стать слишком 

длинными, даже при правильном использовании наследования. В соответствии 

с общей философией Python файлы не должны загромождаться лишними подроб-

ностями. Для этого Python позволяет хранить классы в модулях и импортировать 

нужные классы в основную программу.



Импортирование классов    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


 и создает экземпляр этого класса:



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




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

    Басты бет