我正在开发一个创建" Facebook"在Python 3.x.我目前停留的部分是使用 str 函数返回不同行的字符串。
我正在使用的代码是:
class Status:
likers = []
commentObjs = []
def __init__(self, statusPoster, statusMsg, likers, commentObjs):
self.statuser = statusPoster
self.status = statusMsg
self.likers = likers
self.commentObjs = commentObjs
和
def __str__(self):
return '%s: %s \n"hello"' %(self.statuser,self.status)
__repr__= __str__
我遇到的问题是可能存在可变数量的likers和可变数量的commentObjs。
如果只有一个值,例如:
,我必须实现什么才能实现likers = ["Spongebob"]
commentObjs = ["Spongebob: You should watch the Spongebob movie!"]
它返回终端:
Brad Pitt will watch a movie today!
Spongebob likes this.
Spongebob: You should watch The Spongebob movie!
但是如果每个列表中有多个值,例如:
likers = ["Spongebob","Harry Potter"]
commentObjs = ["Spongebob: You should watch the Spongebob movie!","Brad Pitt: How about nah?"]
它返回:
Brad Pitt will watch a movie today!
Spongebob, Harry Potter likes this.
Spongebob: You should watch The Spongebob movie!
Brad Pitt: Nah, I will probably watch Mr and Mrs. Smith.
我认为可能做到这一点的唯一方法是使用for循环和len(likers)
,但我不知道如何在仍然返回常量值的情况下执行此操作名称和状态。
答案 0 :(得分:1)
您在这里寻找str.join()
。这允许您连接多个字符串之间的连接字符串(可以为空):
>>> likers = ['Spongebob', 'Harry Potter']
>>> ', '.join(likers)
'Spongebob, Harry Potter'
>>> ' -> '.join(likers)
'Spongebob -> Harry Potter'
您可能还想了解str.format()
将值插入模板字符串:
def __str__(self):
likers = ', '.join(self.likers)
comments = '\n'.join(self.commentObjs)
return '{} {}\n{} likes this.\n{}'.format(
self.statuser, self.status, likers, comments)
这会将您的likers
值与逗号以及带有换行符的注释结合起来。
您不应将此作为__repr__
;应生成调试输出,帮助您区分类的两个实例,可选择包含该输出的值。