playerList
包含两个Player
个对象(str
属性分别称为"a"
和"b"
),Player
实现{{} 1}}和__str__
。当我将__repr__
连接到另一个字符串时,我希望该字符串可以附加str(playerList)
形式的内容。而是由"[a, b]"
附加结果字符串。我犯了什么错误给出了这个结果?
这是我写的
"[ , ]"
prompt = "And then choose the opponent you would like to attack from " + str(playerList)
stdout上的内容:
def __str__ (self):
return self.name
def __repr__ (self):
return str()
我想要的是什么:
"And then choose the opponent you would like to attack from [, ]"
答案 0 :(得分:5)
您的__repr__
方法返回一个空字符串:
def __repr__(self):
return str()
没有参数的 str()
是一个空字符串:
>>> str()
''
如果您想直接致电__str__
,或将self
传递给str()
:
return self.__str__()
或
return str(self)
请注意,将列表转换为字符串会将该列表中的所有字符串都包含为表示; repr(stringobject)
的输出,它使用您在创建此类字符串时使用的相同表示法。列表['a', 'b']
将使用该表示法转换为字符串:
>>> l = ['a', 'b']
>>> l
['a', 'b']
>>> str(l)
"['a', 'b']"
>>> print str(l)
['a', 'b']
如果你真的想要包含没有引号的字符串,那么你需要自己做格式化:
>>> '[{}]'.format(', '.join([str(elem) for elem in l]))
'[a, b]'
>>> print '[{}]'.format(', '.join([str(elem) for elem in l]))
[a, b]