基于类型筛选类的属性

2024-03-29 15:56:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

答案是关于inspect、“列表理解”、type()__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()

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

^{pr2}$

输出应该类似于:

value = 10
value = 15

Tags: 对象答案self类型列表return属性init
1条回答
网友
1楼 · 发布于 2024-03-29 15:56:57

您可以使用^{}获取本地属性的字典,然后使用isinstance()测试这些值:

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

vars()本质上返回self.__dict__,但更干净。在

将此转化为一条线上诉的列表理解:

^{pr2}$

相关问题 更多 >