内置连接函数使用什么方法?

时间:2017-10-01 22:38:52

标签: python built-in

我试图使用

a = ''.join((Symbol('a'), Symbol('b'))

但我得到

File "/home/j/_Github-Projects/MiscScripts/string_permutations.py", line 72, in get_permutations
    permutation = Symbol(''.join(permutation))
TypeError: sequence item 0: expected str instance, Symbol found

python docs说一个iterable被接受为join的参数,但这似乎与异常告诉我的内容相矛盾。

我尝试在Symbol中定义一些基类方法,但它没有帮助。

def __concat__(self, other):
    return Symbol(self.symbol + other.symbol)
__add__ = __concat__
__and__ = __concat__

def __iconcat__(self, other):
    self.symbol += other.symbol
    return self

str.join(iterable) docs

2 个答案:

答案 0 :(得分:2)

doc也说:

  

如果有任何非字符串值,将引发TypeError   可迭代...

毕竟,Symbol('a')不是字符串。

答案 1 :(得分:0)

好的,这应该做到,而不是join

        permutation = functools.reduce(
            lambda x, y: x.concatenate(y),
            permutation)

动态语言的乐趣,浏览参数名称,但没有意识到只接受某些值类型。