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



Pdf көрінісі
бет104/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   100   101   102   103   104   105   106   107   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 9 • Классы
В следующем примере в класс включается метод 
update_odometer()
для изменения 
показаний одометра:
class Car():
...
 
def update_odometer(self, mileage):
"""Устанавливает заданное значение на одометре."""
self.odometer_reading = mileage
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
 
my_new_car.update_odometer(23)
my_new_car.read_odometer()
Класс 
Car
почти не изменился, в нем только добавился метод 
update_odometer()


Этот метод получает пробег в милях и сохраняет его в 
self.odometer_reading

В точке 

мы вызываем метод 
update_odometer()
и передаем ему значение 23 
в аргументе (соответствующем параметру 
mileage
в определении метода). Метод 
устанавливает на одометре значение 23, а метод 
read_odometer()
выводит текущие 
показания:
2016 Audi A4
This car has 23 miles on it.
Метод 
update_odometer()
можно расширить так, чтобы при каждом изменении 
показаний одометра выполнялась некоторая дополнительная работа. Добавим 
проверку, которая гарантирует, что никто не будет пытаться сбрасывать показания 
одометра:
class Car():
...
def update_odometer(self, mileage):
"""
Устанавливает на одометре заданное значение.
При попытке обратной подкрутки изменение отклоняется.
"""
 
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
 
print("You can't roll back an odometer!")
Теперь 
update_odometer()
проверяет новое значение перед изменением атрибута. 
Если новое значение 
mileage
больше или равно текущего, 
self.odometer_reading

показания одометра можно обновить новым значением 

. Если же новое значение 
меньше текущего, вы получите предупреждение о недопустимости обратной под-
крутки 

.
Изменение значения атрибута с приращением
Иногда значение атрибута требуется изменить с заданным приращением (вме-
сто того чтобы присваивать атрибуту произвольное новое значение). Допустим, 


Работа с классами и экземплярами
169
вы купили подержанную машину и проехали на ней 100 миль. Следующий метод 
получает величину приращения и прибавляет ее к текущим показаниям одометра:
class Car():
...
def update_odometer(self, mileage):
--snip--
 
def increment_odometer(self, miles):
"""Увеличивает показания одометра с заданным приращением."""
self.odometer_reading += miles
 
my_used_car = Car('subaru', 'outback', 2013)
print(my_used_car.get_descriptive_name())
 
my_used_car.update_odometer(23500)
my_used_car.read_odometer()
 
my_used_car.increment_odometer(100)
my_used_car.read_odometer()
Новый метод 
increment_odometer()
в точке 

получает расстояние в милях 
и прибавляет его к 
self.odometer_reading
. В точке 

создается экземпляр 
my_used_car
. Мы инициализируем показания его одометра значением 23 500; 
для этого вызывается метод 
update_odometer()
, которому передается значение 
23500 

. В точке 

вызывается метод 
increment_odometer()
, которому передает-
ся значение 100, чтобы увеличить показания одометра на 100 миль, пройденные 
с момента покупки:
2013 Subaru Outback 
This car has 23500 miles on it. 
This car has 23600 miles on it.
При желании можно легко усовершенствовать этот метод, чтобы он отклонял 
отрицательные приращения; тем самым вы предотвратите обратную подкрутку 
одометра.


Достарыңызбен бөлісу:
1   ...   100   101   102   103   104   105   106   107   ...   266




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

    Басты бет