1

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

如何做到这一点?

4

1 回答 1

3

定义__repr__myClass

>>> 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}
于 2013-08-21T08:43:07.157 回答