| | 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: |
| | |
| | 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 |
| |
|