在做一个项目时,我在使用继承时陷入了设计中。现在我试着去掉它,改为使用构图,因为这似乎是解决我问题的合适方法。然而,我需要多动症,我不确定我是否以正确的方式实现了我的作文。
有人能看看我下面的代码吗?在最后三行中,我希望所有的动物都能行走,但前提是它们有能力行走。在对该属性调用函数之前,首先检查对象是否具有某个属性(在本例中为“legs”)是一种好的做法吗?我只是好奇这是一个正确的方式来做这件事还是有更好的方式。
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
print("silence...")
class Wings:
def flap(self):
print("Wings are flapping")
class Legs:
def walk(self):
print("Legs are walking")
class Bird:
def __init__(self):
self.animal = Animal("Bird")
self.wings = Wings()
def make_sound(self):
print(f"{self.animal.name} is Singing!")
class Dog:
def __init__(self):
self.animal = Animal("Dog")
self.legs = Legs()
def make_sound(self):
print(f"{self.animal.name} is Barking")
class Cat:
def __init__(self):
self.animal = Animal("Cat")
self.legs = Legs()
def make_sound(self):
print(f"{self.animal.name} is Meowing!")
if __name__ == '__main__':
animals = list()
animals.append(Bird())
animals.append(Dog())
animals.append(Cat())
for animal in animals:
animal.make_sound()
for animal in animals:
if hasattr(animal, 'legs'):
animal.legs.walk()