using % operator to print possibly unitialized data attributes
François Pinard
pinard at iro.umontreal.ca
Fri Sep 9 18:40:24 EDT 2005
[Adam Monsen]
> The following code uses the % operator to print possibly unitialized
> data attributes:
> ------------------------8<------------------------
> class J:
> name = ''
> value = ''
> def __str__(self):
> vals = self.__class__.__dict__
> vals.update(self.__dict__)
> return 'name="%(name)s" value="%(value)s' % vals
> j = J()
> j.name = "j object"
> print j
> ------------------------>8------------------------
> A couple of questions:
> * is there a simpler or more elegant way to do this?
> * how can I get this to work for new-style classes?
One solution which I used a few times, and which also opens the way to
many other niceties, is to manage so `vals' is a `dict'-like type of
your own. Then, you write its `__getitem__' method the way you want.
If I remember well, one of the niceties is that whenever `%(EXPR)s'
is used in a format string, EXPR may be a string (well balanced with
regard to parentheses) which you may then choose to "evaluate", for any
definition of "evaluate" which is fruitful for your application. :-)
--
François Pinard http://pinard.progiciels-bpi.ca
More information about the Python-list
mailing list