python对象的可读名称作为字典键

时间:2013-08-21 08:41:15

标签: python object dictionary key names

在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}

如何实现这一目标?

1 个答案:

答案 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}