2016-12-14 87 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'))' –

相关问题