trouble subclassing str
Bengt Richter
bokr at oz.net
Sat Jun 25 20:43:37 EDT 2005
On 23 Jun 2005 21:27:20 -0700, "Paul McGuire" <ptmcg at austin.rr.com> wrote:
>Dang, that class should be:
>
>class PaddedStr(str):
> def __new__(cls,s,l,padc=' '):
> if l > len(s):
> s2 = "%s%s" % (s,padc*(l-len(s)))
> return str.__new__(cls,s2)
> else:
> return str.__new__(cls,s)
>
Or you could write
>>> class PaddedStr2(str):
... def __new__(cls,s,l,padc=' '):
... return str.__new__(cls, s+padc*(l-len(s)))
...
Which gives
>>> print '>%s<' % PaddedStr2('xxx',5,'.')
>xxx..<
>>> print '>%s<' % PaddedStr2('xxx',3,'.')
>xxx<
>>> print '>%s<' % PaddedStr2('xxx',2,'.')
>xxx<
(Taking advantage of multipliers <=0 working like 0 for strings):
>>> for i in xrange(-3,4): print '%2s: >%s<'% (i, 'xxx'+'.'*i)
...
-3: >xxx<
-2: >xxx<
-1: >xxx<
0: >xxx<
1: >xxx.<
2: >xxx..<
3: >xxx...<
Regards,
Bengt Richter
More information about the Python-list
mailing list