以下是一个按子类类型筛选的解决方法,包含代码示例:
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
class Cat(Animal):
def __init__(self, name, color):
super().__init__(name)
self.color = color
# 创建一些动物实例
dog1 = Dog("Buddy", "Labrador")
dog2 = Dog("Max", "Bulldog")
cat1 = Cat("Kitty", "White")
cat2 = Cat("Luna", "Black")
# 将动物实例放入列表中
animals = [dog1, dog2, cat1, cat2]
# 筛选出所有Dog类的实例
dogs = [animal for animal in animals if isinstance(animal, Dog)]
for dog in dogs:
print(dog.name, dog.breed)
# 筛选出所有Cat类的实例
cats = [animal for animal in animals if isinstance(animal, Cat)]
for cat in cats:
print(cat.name, cat.color)
这个示例中,我们定义了一个Animal类作为基类,然后定义了两个子类Dog和Cat。我们将一些动物实例放入一个列表中,然后使用列表推导式和isinstance()函数来筛选出特定类型的实例。对于为Dog类的实例,我们打印出它的名字和品种;对于Cat类的实例,我们打印出它的名字和颜色。
这种方法可以根据子类的类型对实例进行筛选,并针对特定的子类类型执行相应的操作。