py.user.next
Мы видим, что проблема в функции acquaintance() - она просто держит ограничения, изначально взятые с потолка (писалась она явно не для этого применения).
Это справедливое замечание. Одна из важных основ ООП - инкапсуляция. Объект сам должен знать, как работать с его внутренним состоянием и по возможности не выставлять наружу внутренние механизмы.
Смотрите, как-то так
class Cat: can_eat_max = 5 can_play_max = 10 class Dog: can_eat_max = 15 can_play_max = 20 def play(pet, minutes): if minutes > pet.can_play_max: print("fail")
Или как-то так
class Pet: def play(self, minutes): if minutes > self.can_play_max: raise Error() class Cat(Pet): can_play_max = 10 def play(pet, minutes): try: pet.play(minutes) except Exception as e: print(e)
конкретная архитектура классов не столь важна, важен принцип - внешний код не должен управлять внутренним состоянием объекта и знать об его внутреннем устройстве. Ваша функция acquaintance задает ограничения для методов объектов, это очень плохо.