Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from abc import ABC, abstractmethod
- class Animal(ABC):
- def __init__(self,typee: str, name: str, age: int, gender: str):
- self.name = name
- self.age = age
- self.gender = gender
- self.typee = typee
- @abstractmethod
- def Produce_sound(self):
- pass
- @property
- def age(self):
- return self._age
- @age.setter
- def age(self, age):
- if age < 0:
- raise Exception("Invalid input!")
- else:
- self._age = age
- @property
- def gender(self):
- return self._gender
- @gender.setter
- def gender(self, gender):
- if not (gender == "Male" or gender == "Female"):
- raise Exception("Invalid input!")
- else:
- self._gender = gender
- def __str__(self):
- return f"{self.typee}\n{self.name} {self.age} {self.gender}\n{self.Produce_sound()}"
- class Dog(Animal):
- def Produce_sound(self):
- return "Woof!"
- def __init__(self,typee, name, age, gender):
- Animal.__init__(self,typee, name, age, gender)
- class Frog(Animal):
- def Produce_sound(self):
- return "Ribbit"
- def __init__(self, typee, name, age, gender):
- Animal.__init__(self, typee, name, age, gender)
- class Cat(Animal):
- def Produce_sound(self):
- return "Meow meow"
- def __init__(self,typee, name, age, gender):
- Animal.__init__(self, typee, name, age, gender)
- class Tomcat(Animal):
- def Produce_sound(self):
- return "MEOW"
- def __init__(self, typee, name, age, gender = 'Male'):
- Animal.__init__(self,typee, name, age, gender)
- class Kitten(Animal):
- def Produce_sound(self):
- return "Meow"
- def __init__(self,typee, name, age, gender = 'Female'):
- Animal.__init__(self,typee, name, age, gender)
- animals_list = []
- animal_type = input()
- while not animal_type == "Beast!":
- typee = animal_type
- name, age, gender = input().split()
- if not (animal_type == "Dog" or animal_type == "Cat" or animal_type == "Frog" or animal_type == "Tomcat" or animal_type == "Kitten"):
- print("Invalid input!")
- else:
- if int(age) <= 0:
- print("Invalid input!")
- else:
- if not (typee == "Tomcat" or typee == "Kitten"):
- str_class_instance = f"{animal_type}('{typee}','{name}',{age},'{gender}')"
- current_animal = eval(str_class_instance)
- else:
- str_class_instance = f"{animal_type}('{typee}','{name}',{age})"
- current_animal = eval(str_class_instance)
- animals_list.append(current_animal)
- animal_type = input()
- try:
- for animal in animals_list:
- print(animal)
- except Exception as e:
- print(str(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement