首页 > 解决方案 > 类属性的链表

问题描述

我有三个班

class Animals:
    def __init__(self):
         self.dog = []
         self.cat = [] 

class Dog:
    def __init__(self,age,teeth):
        self.age   = age
        self.teeth = teeth

class Cat:
    def __init__(self,age,legs):
        self.age  = age
        self.legs = legs

和功能:

def get_animals_from_attribute_value(animals_class, attribute, value):
    from itertools import chain
    animals = []
    for animal in chain( -> all attributes of animals_class, e.g. dog and cat <- ):
        x = getattr(animal, attribute, None)
        if x == value:
            animals.append(animal)
    return animals

剧本

animals = Animals()

animals.dog.append(Dog(1, 2))
animals.dog.append(Dog(3, 1))
animals.cat.append(Cat(1, 3))

certain_animals = get_animals_from_attribute_value(animals,"age",1)

应该给出一个包含所有类实例的列表,其中属性 age == 1。我现在的问题是如何从动物类的所有属性中创建一个可迭代列表(参见函数脚本中的第 4 行)。

谢谢 :)

标签: pythonlistattributeschaining

解决方案


您可以使用该__dict__属性,例如,获取可以调用的 dum1 和 dum2

outer_class.__dict__.keys()

推荐阅读