python - 根据类型过滤类的属性

标签 python python-3.x

我想根据类型过滤类对象的属性。

答案将围绕 inspect、“列表理解”、type()__dict__dict() 但我不让它工作。

class A():
    def __init__(self, value):
        self.x = value

    def __str__(self):
        return "value = {}\n".format(self.x)

class T():
    def __init__(self):
        self.a1 = A(1)
        self.a2 = A(2)
        self.b = 4

t = T()

我想只打印 T 类中 A 类型的属性

class T():
    def __init__(self):
        self.a1 = A(1)
        self.a2 = A(2)
        self.b = 4

    def __str__(self):
         ret = ""
         for i in [*magic*]:
             ret += str(i)
         return ret

输出应该是这样的:

value = 10
value = 15

最佳答案

您可以使用 vars(self)获取本地属性的字典,然后只需使用 isinstance() 测试值:

def __str__(self):
    ret = ""
    for i in vars(self).values():
        if isinstance(i, A):
            ret += str(i)
    return ret

vars() 本质上返回 self.__dict__ ,但更简洁。

将其转化为单行吸引力的列表理解:

def __str__(self):
    return ''.join([i for i in vars(self).values() if isinstance(i, A)])

关于python - 根据类型过滤类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177946/

相关文章:

python - 为什么纬度和经度在netcdf文件中是二维数组?

python - 嵌套列表 Python 3 中的数字平方

python - 以度数围绕另一个点旋转点python

python - 如何使用 SciPy/NumPy 从图像中查找和删除白色 Blob ?

python - 如何撤消 TensorFlow session 中的最后一个训练步骤?

python - 为什么 pandas 时间序列重新采样会引发不兼容的频率错误?

python - 如何从字典中打印具有特定键的列表

python - 当任何类型可以有零个元素时,元素类型组合的解决方案

python - 如何在Python中存储用户输入并稍后调用?

python - 如何在 python 中显示我的图像?