我有一个类,如果在字符串的上下文中使用,则实例应以字符串形式呈现。确切地说,应该返回指向字符串的属性。
该类看起来如下并且到目前为止起作用:
class Test:
string = ""
def __init__(self, value=""):
self.string = value
def __repr__(self):
return str(self.string)
def __str__(self):
return self.__repr__()
def __add__(self, other):
return "%s%s" % (self.string, other)
def __radd__(self, other):
return "%s%s" % (other, self.string)
不幸的是,当我尝试这样的事情时,我得到了一个TypeError:
>>> "-".join([Test("test"), Test("test2")])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, instance found
对字符串执行相同的操作,我得到了预期的结果:
>>> "-".join(["test", "test"])
'test-test'
>>>
我很确定我只是错过了正确的运算符重载功能。 有人可以用列表中的类实例来实现这个目的吗?
感谢。
答案 0 :(得分:2)
join
要求元素为字符串,如下所示:
https://docs.python.org/3/library/stdtypes.html#str.join
您需要将对象显式转换为字符串,例如:
"-".join(map(str, [Test("test"), Test("test2")]))