Классы¶
Класс — это тип данных, определяющий свойства и поведение некоторой сущности. Свойства определяются атрибутами (переменными), а поведение — методами.
Разберите следующий пример. Какие определены классы? Какие атрибуты они содержат? Какие методы реализованы? Какие созданы экземпляры классов?
class Wheel:
def __init__(self):
self.is_good = True
def puncture(self):
self.is_good = False
class Car:
def __init__(self, wheel_count):
self.wheels = []
for _ in range(wheel_count):
self.wheels.append(Wheel())
def drive(self):
if self.is_good():
print('Driving')
else:
print('Car is broken')
def is_good(self):
for wheel in self.wheels:
if not wheel.is_good:
return False
return True
car = Car(4)
car.drive()
car.wheels[0].puncture()
car.drive()
Задание 1¶
Разработайте программу для ухода за виртуальным домашним животным. Состояние
и поведение животного оформите в класс Pet. Определите данные, которые
будут характеризовать потребности животного. Например, голод, радость, сон.
Пусть каждый параметр принимает значения от 0 до 100, где 100 — отсутствие
потребности, 0 — острая необходимость.
Пусть счетчик каждой потребности уменьшается со временем. Скорость изменения
потребности удобно определить в методе __init__ вместе с остальными
атрибутами.
Для вычисления значения текущих характеристик будет удобно хранить время
последнего обновления состояния животного. Для получения текущего времени
воспользуйтесь вспомогательной функцией cur_time.
Создайте меню для ухода за животным, пусть оно включает пункты, соответствующие потребностям: «Покормить», «Поиграть» и другие. Пусть для простоты потребности восполняются моментально до максимального уровня.
На каждом шаге следует выводить изображение животного и его состояние.
Используйте заготовку:
import textwrap
from time import time
def cur_time():
return int(time())
class Pet:
def __str__(self):
view = textwrap.dedent(r"""
|\---/|
| ,_, |
\_`_/-..----.
___/ ` ' ,""+ \
(__...' __\ |`.___.';
(_,...'(_,.`__)/'.....+
""")
return view
def main():
pass
if __name__ == '__main__':
main()
Задание 2¶
Разработайте простой планировщик. Создайте классы Event и Calendar.
Пусть событие содержит описание, а также дату и время начала и окончания.
Календарь включает в себя список событий и методы для управления ими. Создайте
меню со следующими пунктами:
Добавить мероприятие
Удалить мероприятие
Показать все мероприятия
Показать мероприятия на день
Показать мероприятия на сегодня
Выход
Для работы с датой и временем импортируйте функции:
from datetime import date, datetime