Please hear my plea: print without softspace

Nick Patavalis npat at efault.net
Sat Feb 28 11:59:27 EST 2004


In article <edc2QLAGMJQAFwoM at jessikat.fsnet.co.uk>, Robin Becker wrote:
> 
> 
> ##############
> class hidesoftspace:
>     def __init__(self,fobj):
>         self.__dict__['_fobj'] = fobj
>         fobj.softspace = False
>     def __getattr__(self,a):
>         if a=='softspace': return False
>         return getattr(self._fobj,a)
>     def __setattr__(self,a,v):
>         if a=='softspace': return
>         setattr(self._fobj,a,v)
> 
> import sys
> print 'before hiding',1,2,3,4
> sys.stdout=hidesoftspace(sys.stdout)
> print 'after  hiding',1,2,3,4
> ##############

Would you perhaps care to comment a bit more, or provide a pointer to
some docs? It seems that there is a "softspace" atribute in the
sys.stdout file object, and that this attribute gets set by the print
statement itself. With your clever trick you make it imposible for
someone to set this attribute to anything else but "False". What are
the exact semantics behind this?

I tried this:

  import sys
  print sys.stdout.softspace
  0
  print "test:", 1, 2, 3, sys.stdout.softspace
  test: 1 2 3 1
  print sys.stdout.softspace
  0

Which seems to support my explanation, but what exactly are the
semantics of "softspace"?

Thanks
/npat





More information about the Python-list mailing list