Advertisement
eNeRGy90

Untitled

Mar 9th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. from abc import ABC, abstractmethod
  2.  
  3.  
  4. class Animal(ABC):
  5.     def __init__(self, name, age, gender):
  6.         self.name = name
  7.         self.age = age
  8.         self.gender = gender
  9.         super().__init__()
  10.  
  11.     @abstractmethod
  12.     def produce_sound(self):
  13.         pass
  14.  
  15.     @property
  16.     def name(self):
  17.         return self.__name
  18.  
  19.     @name.setter
  20.     def name(self, name):
  21.         if name == "":
  22.             raise Exception("Invalid input!")
  23.         self.__name = name
  24.  
  25.     @property
  26.     def age(self):
  27.         return self.__age
  28.  
  29.     @age.setter
  30.     def age(self, age):
  31.         if age == "" or int(age) < 0:
  32.             raise Exception("Invalid input!")
  33.         self.__age = age
  34.  
  35.     @property
  36.     def gender(self):
  37.         return self.__gender
  38.  
  39.     @gender.setter
  40.     def gender(self, gender):
  41.         if gender == "":
  42.             raise Exception("Invalid input!")
  43.         self.__gender = gender
  44.  
  45.  
  46. class Dog(Animal):
  47.     def __init__(self, name, age, gender):
  48.         Animal.__init__(self, name, age, gender)
  49.  
  50.     def produce_sound(self):
  51.         return "Woof!"
  52.  
  53.  
  54. class Cat(Animal):
  55.     def __init__(self, name, age, gender):
  56.         Animal.__init__(self, name, age, gender)
  57.  
  58.     def produce_sound(self):
  59.         return "Meow meow"
  60.  
  61.  
  62. class Frog(Animal):
  63.     def __init__(self, name, age, gender):
  64.         Animal.__init__(self, name, age, gender)
  65.  
  66.     def produce_sound(self):
  67.         return "Ribbit"
  68.  
  69.  
  70. class Kitten(Cat):
  71.     def __init__(self, name, age, gender=None):
  72.         Cat.__init__(self, name, age, gender)
  73.  
  74.     def produce_sound(self):
  75.         return "Meow"
  76.  
  77.  
  78. class Tomcat(Cat):
  79.     def __init__(self, name, age, gender=None):
  80.         Cat.__init__(self, name, age, gender)
  81.  
  82.     def produce_sound(self):
  83.         return "MEOW"
  84.  
  85.  
  86. def classify(cls, name, age, gender):
  87.     obj = 0
  88.     if cls == "Dog":
  89.         obj = Dog(name, age, gender)
  90.     elif cls == "Cat":
  91.         obj = Cat(name, age, gender)
  92.     elif cls == "Frog":
  93.         obj = Frog(name, age, gender)
  94.     elif cls == "Kitten":
  95.         gender = "Female"
  96.         obj = Kitten(name, age, gender)
  97.     elif cls == "Tomcat":
  98.         gender = "Male"
  99.         obj = Tomcat(name, age, gender)
  100.     return obj
  101.  
  102.  
  103. while True:
  104.     cls = input()
  105.     if cls == "Beast!":
  106.         break
  107.     data = input().split()
  108.     nam = data[0]
  109.     ag = data[1]
  110.     gen = data[2]
  111.     try:
  112.         if cls != "Dog" and cls != "Frog" and cls != "Cat" and cls != "Tomcat" and cls != "Kitten":
  113.             raise Exception("Invalid input!")
  114.         else:
  115.             obj = classify(cls, nam, ag, gen)
  116.             print(cls)
  117.             print(f"{obj.name} {obj.age} {obj.gender}")
  118.             print(obj.produce_sound())
  119.     except Exception as exception:
  120.         print("Invalid input!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement