在Python中,使用自定义对象作为字典键可以提供非常难以理解的输出。这是一个小例子:
class myClass(object):
def __init__(self,foo,bar):
self.foo = foo
self.bar = bar
item = myClass(1,2)
myDict = {}
myDict[item] = 10
print myDict
{<__main__.myClass object at 0x01998FD0>: 10}
如果有很多对象,该词典将变得不可读。我希望它显示对象的名称:
{'item':10}
如何实现这一目标?
答案 0 :(得分:3)
为myClass
定义__repr__
:
>>> class myClass(object):
... def __init__(self,foo,bar):
... self.foo = foo
... self.bar = bar
... def __repr__(self):
... return 'myClass({0.foo},{0.bar})'.format(self)
...
>>> item = myClass(1,2)
>>> item
myClass(1,2)
>>> myDict = {}
>>> myDict[item] = 10
>>> myDict
{myClass(1,2): 10}