Python 打印对象列表时,为_repr_方法定义不同的输出
我有一个自定义类,它实现了Python 打印对象列表时,为_repr_方法定义不同的输出,python,python-3.x,repr,python-class,Python,Python 3.x,Repr,Python Class,我有一个自定义类,它实现了\u repr\u方法,打印出此对象的所有属性,例如: Id: XXX, Name: XXX PropA: XXX, PropB: XXX, PropC: XXX ... Id: XXX, Name: XXX 问题- 在打印这些对象的列表时,是否有方法将输出更改为仅返回属性的子集,例如: Id: XXX, Name: XXX PropA: XXX, PropB: XXX, PropC: XXX ... Id: XXX, Name: XXX 我的想法-我能
\u repr\u
方法,打印出此对象的所有属性,例如:
Id: XXX,
Name: XXX
PropA: XXX,
PropB: XXX,
PropC: XXX ...
Id: XXX,
Name: XXX
问题-
在打印这些对象的列表时,是否有方法将输出更改为仅返回属性的子集,例如:
Id: XXX,
Name: XXX
PropA: XXX,
PropB: XXX,
PropC: XXX ...
Id: XXX,
Name: XXX
我的想法-我能想到的实现这一点的唯一可能方法是为对象实现一个自定义列表类,该类实现了
\u repr\u
的不太详细的输出,但是,如果可能的话,我宁愿避免这种情况。打印([obj1,obj2,obj3])
将使用\u repr\u
,而首先解压列表的print(*[obj1,obj2,obj3])
将使用\uuu str\uuu
,因此一种解决方案是重写\uu str\uu
以返回短版本并使用print(*lst\u对象)
如果您想为长版本保留\uuuu repr\uuuu
。您的类不应根据具体情况采取不同的行为。如果您想要一个最小的repr,请显式创建一个返回一个的方法,并显式使用likeprint([o.min_repr()表示lst中的o])
。