通常,在Python中輸出對象時,需要定義在__repr__
中返回的字符串,但是如果您希望它返回其他內容,例如整數或元組?在Python中引用對象時返回特定的數據類型
我舉個例子。我的班級是Users
,並且存在成員變量self.username
和self.email
。如果我想輸出一個Users
類型的對象,我怎樣才能讓它返回(self.username,self.email)
作爲元組?
通常,在Python中輸出對象時,需要定義在__repr__
中返回的字符串,但是如果您希望它返回其他內容,例如整數或元組?在Python中引用對象時返回特定的數據類型
我舉個例子。我的班級是Users
,並且存在成員變量self.username
和self.email
。如果我想輸出一個Users
類型的對象,我怎樣才能讓它返回(self.username,self.email)
作爲元組?
你不能。 __repr__
的返回值必須是一個字符串,並且該字符串的內容應該代表一個有效的Python表達式,如果可能的話,該表達式可以傳遞給eval()
以創建該類型的新對象。
https://docs.python.org/2/reference/datamodel.html#object.repr
對象的屬性__*__
是爲了實現由Python語言標準化內部功能。像__add__
(這是用來提供的object + whatever
結果,__repr__
預計將在規定的方式行事,這將包括返回(一)一定的數據類型(S)。
雖然靜態類型語言將報告編譯期一對於像Python這樣的動態類型語言來說,這可能會導致意外的(但不是未定義的!)運行時行爲,這甚至不會導致錯誤信息,因此,千萬不要改變這種行爲,以免出乎意料。想要返回自定義的東西,請使用類似get_info(self)
或類似的自定義方法(請勿使用__*__
名稱)
'return repr(integer)'或'return repr(tuple)'? – vaultah
你能舉一個你爲什麼想要這樣做的例子嗎? – Kevin
是否有任何特定的原因,你希望它返回一個元組,例如'(「Kevin」,「[email protected]」)而不是一個看起來像元組的字符串,比如''(「Kevin」,「 [email protected]「)''? – Kevin