File size: 1,392 Bytes
99a41ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class Animal:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age

    def speak(self) -> str:
        pass

    def get_info(self) -> str:
        return f"{self.name} is {self.age} years old"


class Dog(Animal):
    def __init__(self, name: str, age: int, breed: str):
        super().__init__(name, age)
        self.breed = breed

    def speak(self) -> str:
        return f"{self.name} says Woof!"

    def fetch(self) -> str:
        return f"{self.name} is fetching the ball"


class Cat(Animal):
    def __init__(self, name: str, age: int, indoor: bool = True):
        super().__init__(name, age)
        self.indoor = indoor

    def speak(self) -> str:
        return f"{self.name} says Meow!"

    def climb(self) -> str:
        return f"{self.name} is climbing"


class PetOwner:
    def __init__(self, name: str):
        self.name = name
        self.pets = []

    def add_pet(self, pet: Animal):
        self.pets.append(pet)

    def call_all_pets(self) -> list:
        # return [pet.speak() for pet in self.pets]
        result = []

        for pet in self.pets:
            result.append(pet.speak())
        return result


def create_pet_family():
    owner = PetOwner("Alice")
    dog = Dog("Buddy", 3, "Golden Retriever")
    cat = Cat("Whiskers", 2, True)

    owner.add_pet(dog)
    owner.add_pet(cat)

    return owner