On May 9, 1:25 pm, Claudiu Popa <cp...@bitdefender.com> wrote: > Hello Karim, > > > You just have to implement __str__() python special method for your > > "custom_objects". > > Regards > > Karim > >> Cheers, > >> Chris > >> -- > >>http://rebertia.com > > I already told in the first post that I've implemented __str__ function, but > it doesn't > seems to be automatically called. > For instance, the following example won't work: > > >>> class a: > > def __init__(self, i): > self.i = i > def __str__(self): > return "magic_function_{}".format(self.i)>>> t = a(0) > >>> str(t) > 'magic_function_0' > >>> "".join([t]) > > Traceback (most recent call last): > File "<pyshell#13>", line 1, in <module> > "".join([t]) > TypeError: sequence item 0: expected str instance, a found > > -- > Best regards, > Claudiu
The built-in str join() method just doesn't do the conversion to string automatically -- instead it assume it has been given a sequence of string. You can achieve the effect you want by modifying the optimized version of my earlier post that @Ian Kelly submitted. def join(seq, sep): it = iter(seq) sep = str(sep) try: first = it.next() except StopIteration: return [] def add_sep(r, v): r += [sep, str(v)] return r return ''.join(reduce(add_sep, it, [str(first)])) class A: def __init__(self, i): self.i = i def __str__(self): return "magic_function_{}".format(self.i) lst = [A(0),A(1),A('b'),A(3)] print repr( join(lst, '|') ) Output: 'magic_function_0|magic_function_1|magic_function_b|magic_function_3' -- http://mail.python.org/mailman/listinfo/python-list