[Zope-dev] strange priv leak
Steve Alexander
steve@cat-box.net
Wed, 21 May 2003 19:02:55 +0300
Steve Alexander wrote:
>
>> Instances of built-in types do not allow extra attributes (nor should
>> they.) So, for example, declarePrivate('some_string_attribute') has
>> no effect, nor did it ever have any effect.
>
>
> We don't need instances of built-in types to allow extra attributes.
> So, no need to say {}.__roles__ = something. What we would need is to be
> able to say dict.__roles__ = something.
>
> It would be nice if the objects that represent built-in types could have
> attributes set on them. This would be helpful for some things in Zope 3
> too.
Actually, a piece of only moderately evil C code could do this.
In Python 2.2, tuple.__dict__ is a dict-proxy object. This is a
dict-like object that presents a read-only interface to a regular python
dict.
The struct of a dictproxy is not exported. However, one could abuse
tp_traverse with an appropriate visiter function to set an item in the
dict using only the exported C API.
--
Steve Alexander