遍历具有不同结构的类可以使用多态性和递归来实现。以下是一个示例代码,其中包含了一个基类Animal和两个派生类Cat和Dog,以及一个函数printAnimalInfo()来遍历Animal对象的属性。
class Animal:
def __init__(self, name):
self.name = name
def printInfo(self):
print("I am an animal.")
class Cat(Animal):
def __init__(self, name):
super().__init__(name)
def printInfo(self):
print("I am a cat.")
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
def printInfo(self):
print("I am a dog.")
def printAnimalInfo(animal):
animal.printInfo()
if isinstance(animal, Cat):
print("I am a cat-specific behavior.")
elif isinstance(animal, Dog):
print("I am a dog-specific behavior.")
if isinstance(animal, Animal):
print("I am a general animal behavior.")
if isinstance(animal, Cat) or isinstance(animal, Dog):
# 如果是Cat或Dog类型,则递归调用printAnimalInfo()函数
printAnimalInfo(animal)
# 创建Cat和Dog对象
cat = Cat("Kitty")
dog = Dog("Buddy")
# 调用printAnimalInfo()函数遍历对象
printAnimalInfo(cat)
print("------")
printAnimalInfo(dog)
输出结果:
I am a cat.
I am a cat-specific behavior.
I am a general animal behavior.
------
I am a dog.
I am a dog-specific behavior.
I am a general animal behavior.
这个示例代码中,Animal类是一个基类,Cat和Dog类是继承自Animal的派生类。printAnimalInfo()函数接受一个Animal对象作为参数,首先打印出对象的特定信息,然后根据对象的类型执行相应的行为。如果对象是Cat或Dog类型,那么函数会递归调用printAnimalInfo()函数,以遍历对象的属性。
上一篇:遍历具有不同定义模式的对象