Accessing 'mangled' class attrbutes
Steve Juranich
sjuranic at gmail.com
Wed Mar 1 11:22:51 EST 2006
Gerard Flanagan wrote:
> I would like to do the following:
>
> from elementtree.SimpleXMLWriter import XMLWriter
>
> class HtmlWriter(XMLWriter, object):
> def write_raw(self, text):
> super( HtmlWriter, self ).flush()
> super( HtmlWriter, self ).__write(text)
>
> but because of the name-mangling caused by '__write' I get:
>
> AttributeError: 'super' object has no attribute '_HtmlWriter__write'.
>
> Is there any simple way round this situation in general?
>
> (I just want to write out a HTML 'DOCTYPE' declaration)
Try: (not the Python keyword, but a directive to you)
super(HtmlWriter, self)._XMLWriter__write(text)
In general, to access the name-mangled members, simply add
_<class_name> to the front of the member name and you should be able to get
at it. But be careful, since this is a reference to the base class, so if
it's inherited from some other class, you'll need to know from which class
the member is inherited.
HTH
--
Steve Juranich
Tucson, AZ
USA
More information about the Python-list
mailing list