2016-12-14 45 views
0

我已經看了很多不同的論壇帖子,並嘗試了一堆不同的技術,但我還沒有想出如何讓我的str函數返回一個字符串'',而不是沒有引號。__str__函數不返回字符串,而是實例?

我的代碼:

class Comment: 
    def __init__(self,commenterName, content): 
     self.name = commenterName 
     self.content = content 

    def __str__(self): 
     return str('%s: %s' %(self.name, self.content)) 

據我瞭解,如果我在我的STR功能伴隨我的返回值與STR()應該返回字符串值。

,而不是...:

>>>Comment("lol","lol") 
<__main__.Comment object at 0x000000000354CF60> 

我需要專門返回值作爲一個字符串,而不是打印出來,我知道。

我想要得到的輸出:

"lol": "lol" 

,但我已成功最好的是:

lol: lol 

我一直在這個確切一點問題相當一段時間,不能圖我做錯了什麼。感謝您提前幫助:D

P.S.我想在你的終端使用

Comment(commenterName,content) 

,使其返回

'commenterName: content' 

我試圖做到這一點,而不使用在終端打印()命令以及未使用的價值終端中的str()命令。然而,在我的python文件中,它很好,我只需要以某種方式返回值。我希望這不是太多的轉貼,因爲我說我試圖找到解決方案,但我不能讓他們工作。

+2

按你的終端上輸入將調用對象'__repr__',而不是它的'__str__';使用'print(Comment(「lol」,「lol」))'。 –

+0

我將如何實現__repr__,以便我可以在終端中運行Comment(name,content)並接收和輸出'name:content'? – CoopStad

+0

在'__str__'的定義之後在你的類中分配'__repr__ = __str__'。 –

回答

0

您需要調用__str__函數。嘗試

my_var = Comment('name', 'content') print(str(my_var)) print('My message is: %s'.format(my_var)

+0

有沒有辦法做到這一點,而無需在終端輸入額外的代碼?例如,我可以運行Comment(name,content)並返回一個表示'name:output'的字符串嗎? – CoopStad

+0

好吧,如果你不需要保存變量,而只是想打印這些值,你可以創建一個打印它們的函數。否則,你最好的選擇是print(Comment('name','content'))' –

相關問題