On Sat, 9 Apr 2005, Fredrik Lundh wrote:
> Ka-Ping wrote:
> >     counter = Counter()
> >     readonly_facet = facet(counter, ['value'])
> >
> > If i've done this correctly, it should be impossible to alter the
> > contents of the list or the counter, given only the immutable_facet
> > or the readonly_facet, after restrict() has been called.
>
> I'm probably missing something, but a straightforward reflection
> approach seems to work on my machine:

That's funny.  After i called restrict() Python didn't let me get im_self.

    >>> restrict()
    >>> readonly_facet.value
    <bound method Counter.value of <__main__.Counter instance at 0x41df0>>
    >>> readonly_facet.value.im_self
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    RuntimeError: restricted attribute
    >>>

It doesn't matter if i make the facet before or after restrict().

    >>> restrict()
    >>> rf2 = facet(counter, ['value'])
    >>> rf2.value
    <bound method Counter.value of <__main__.Counter instance at 0x41df0>>
    >>> rf2.value.im_self
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    RuntimeError: restricted attribute
    >>>

I'm using

    Python 2.3 (#1, Sep 13 2003, 00:49:11)
    [GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin


-- ?!ng
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to