On Tue, Jan 21, 2014 at 12:07 PM, Joseph L. Casale
<jcas...@activenetwerx.com> wrote:
> foo = MyClass()
> # This calls __set__
> foo.some_property = [x for x in range(5)]
> # This bypasses __set__ obviously.
> foo.some_property.append(5)
>
> So re-implementing my own list class has the draw back for the user that he 
> must create the
> data type is assigning directly. I want to avoid this. What workaround can I 
> leverage to catch
> the append event so I can avoid the new data type?

You're going to have to subclass list if you want to intercept its
methods. As I see it, there are two ways you could do that: when it's
set, or when it's retrieved. I'd be inclined to do it in __set__, but
either could work. In theory, you could make it practically invisible
- just check to see if you're trying to __set__ a list, and if you
are, set a magical list instead.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to