2013-02-17 142 views
0

我正在Python中創建一個名爲House的類。它有實例變量,如街道名稱和街道號碼。
Python調用類對象的返回

h = House(1234, "main street") 
>>>h.street_name 
Main Street 
>>>h.street_number 
1234 

>>>h 
<__main__.House object at 0x27ffbd0> 
當你打電話「H」

,程序應該返回「1234主街」來代替。我應該如何處理這個問題?

+3

Python命令提示符不是「調用」對象,而是調用對象的'__repr __()'方法,該方法假定返回一個代表對象值的字符串。如果該對象沒有'__repr __()'方法,但有'__str __()'方法,它將使用該方法。對於沒有任何一個類的課程,您看到的是默認方法返回的內容。 – martineau 2013-02-17 02:12:42

+0

當你說「call h」時,你的意思是'h()'? – chepner 2013-02-17 05:20:51

回答

4

你想定義一個返回字符串表示的__str__方法。例如:

class House: 
    # other methods 
    def __str__(self): 
     return "%d %s" % (self.street_number, self.street_name) 
+3

'__repr__'應該返回有效的Python表達式,如果可能的話重建對象。 '__str__'用於轉換爲字符串。 – 2013-02-17 02:20:30

+0

@CatPlusPlus:謝謝,修正 – 2013-02-17 02:43:44

0

.... Python中的類叫做家。它具有實例變量....

一個類沒有實例變量。實例有

'變量'是Python中令人困惑的詞。
Python不向開發者提供「變量」(=盒),只有對象。
什麼人混淆地稱'變量'是大多數時候的標識符(=名稱)....或者也許...什麼...我不知道,他們不知道自己,因爲沒有變量在使用Python中的開發者....

不能調用h如果它不是一個可調用對象(類,函數....)

你的名字「呼叫」什麼根本的需求的Python爲您呈現對象h。由於它不是一個簡單的對象,而是一個整數或一個字符串,而是一個實例,也就是說一個屬性是數據屬性和方法的對象,所以Python不會爲您提供廣泛的實例及其所有屬性和屬性的值(對某些實例來說可能很長),它會向您顯示實例的簡短描述,說明它是哪個類的實例,並提供其地址。