我有一个字典和一个打印声明如下:
d = {'ar':4, 'ma':4, 'family':pf.Normal()}
print(d)
哪个给了我
{'ar': 4, 'ma': 4, 'family': <pyflux.families.normal.Normal object at 0x11b6bc198>}
有没有办法清理“家庭”的价值?关键?重要的是,通话仍然只是打印(d)&#39;因为它曾用于打印其他没有此问题的词典。这可能吗?谢谢你的时间。
编辑:
感谢答案的人,我会将其标记为正确,但我还没有尝试过,无法确认。我最后创建了另一个字典,清理后的字符串作为键,对象作为值。这是一个更多的工作,但我在阅读/得到答案之前做了这些,所以我只是坚持它。谢谢!
答案 0 :(得分:4)
你错了。您不想更改print(dict)
输出。这需要改变内置字典的打印方式。您想为自己的__repr__()
对象添加自定义pf.Normal()
。
I believe pf.Normal()
comes from the pyflux
package,所以我建议看看该类假设要保留哪些数据,并通过继承该类来完成打印:
class CustomNormalObject(pf.Normal):
def __repr__(self):
# Add pretty printed data here
pass
或者,如果您需要将自己的参数传递到自定义类,则可以使用super()
:
class CustomNormalObject(pf.Normal):
def __init__(self, myparm, *args, **kwargs):
# If using Python 3, you can call super without
# passing in any arguments. This is simply for Python 2
# compatibility.
super(CustomNormalObject, self).__init__(*args, **kwargs)
self.myparm = myparm
def __repr__(self):
# Add pretty printed data here
pass
答案 1 :(得分:2)
因为我认为pyflux
是一个外部库,我认为你不应该直接编辑它。执行所需操作的简便方法是覆盖__str__
类的__repr__
或Normal
方法。
pyflux.families.normal.Normal.__str__ = lambda self: "Clean up value here."
这里我使用lambda函数进行说明,但当然可以使用已定义的函数。