Напишите класс Голубь (Pigeon), экземпляр p которого инициализируется с аргументами: имя (строка), дальность полёта и грузоподъёмность (целые числа). Класс реализует (инкапсулирует) функциональность:
str(p) — возвращает своё имя в формате Pigeon <имя>, <грузоподъёмность>;
p.eat(food) — подкрепляется. За каждые 10 порций еды грузоподъёмность увеличивается на 1. Если количество порций не кратно 10, остаток хранится в запасе и может быть учтён при следующей еде. Ничего не возвращает;
p.carry(load, range) — проверяет, может ли он донести переданный в качестве аргумента груз на заданную дальность. Возвращает True, если может, и False, если хоть что-то меньше;
p.flap_wings() — машет крыльями. При каждом вызове меняется возвращаемое значение: то up, то down. Первый раз up;
экземпляры класса можно сравнивать. Сначала сравниваются по грузоподъёмности, потом по дальности, потом по длине имени, потом по алфавиту.
Пример 1
Ввод Вывод
from solution import Pigeon
p = Pigeon('Johnas', 100, 10)
print(p)
print(p.flap_wings())
print(p.flap_wings())
print(p.flap_wings())
p.eat(25)
print(p)
print(p.carry(100, 13))
Вывод:
Pigeon Johnas, 10
up
down
up
Pigeon Johnas, 12
False
Пример 2
Ввод Вывод
from solution import Pigeon
p1 = Pigeon('Johnas', 100, 10)
p2 = Pigeon('Calman', 100, 10)
print(p1, p2, sep='\n')
print(p1 > p2)
p2.eat(13)
print(p1 >= p2)
p1.eat(42)
p2.eat(7)
print(p1, p2, sep='\n')
print(p1.carry(90, 15))
Вывод:
Pigeon Johnas, 10
Pigeon Calman, 10
True
False
Pigeon Johnas, 14
Pigeon Calman, 12
False