2013-08-21 105 views
1

在Python中,使用自定義對象作爲字典鍵可能會產生相當不可讀的輸出。這是一個小例子: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} 

如何實現這一目標?

回答

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} 
+0

或'__str__'與'print'聲明 –

+0

是的使用,這將是一個合理的解決方案。介意解釋「0」對象的含義?它也可以稱爲它的名字'項目'? – Forzaa

+0

@Forzaa,'0'表示傳遞給[str.format](http://docs.python.org/2/library/stdtypes#str.format)方法的第一個參數。 – falsetru