我想基于类型过滤类的对象的属性。
答案将围绕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()
我想在类A
T
类型的属性
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
答案 0 :(得分:2)
您可以使用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)])