Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #5035
| From | Martineau <ggrp2.20.martineau@dfgh.net> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Custom string joining |
| Date | 2011-05-09 14:38 -0700 |
| Organization | http://groups.google.com |
| Message-ID | <b0f6e092-5242-475a-926b-d8a2439004f8@h12g2000pro.googlegroups.com> (permalink) |
| References | <254518825.20110507153133@bitdefender.com> <BANLkTim-94Zfq1o0P5DnAKfywR=cTm2z9Q@mail.gmail.com> <4DC84B2E.9090209@free.fr> <mailman.1355.1304972738.9059.python-list@python.org> |
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'
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar | Unroll thread
Re: Custom string joining Claudiu Popa <cpopa@bitdefender.com> - 2011-05-09 23:25 +0300 Re: Custom string joining Martineau <ggrp2.20.martineau@dfgh.net> - 2011-05-09 14:38 -0700
csiph-web