python - 类属性的链表
问题描述
我有三个班
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 行)。
谢谢 :)
解决方案
您可以使用该__dict__
属性,例如,获取可以调用的 dum1 和 dum2
outer_class.__dict__.keys()
推荐阅读
- google-cloud-data-fusion - Google Data Fusion:“循环”输入数据,然后在每个输入行执行多个 Restful API 调用
- php - phpseclib 2.0 生成的签名与具有相同参数的任何其他库不同
- mysql - SQL开发与组合损失率
- vba - 为每张幻灯片分组形状/对象并在PowerPoint演示文稿中翻转它
- windows - 如何使用 vcpkg 安装 gsl 2.6?
- javascript - 从另一个函数中的函数返回
- c# - 如何将数据从自定义呈现页面发送到 Xamarin 中的共享页面
- javascript - Formik 自定义颜色选择器
- c++ - 这种“省略失败”是语言规定的吗?
- corda - 无法使用帐户依赖项构建 cordapp