我想根据类型过滤类对象的属性。
答案将围绕 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/