On 2/20/07, Delaney, Timothy (Tim) <[EMAIL PROTECTED]> wrote:
> Steven Bethard wrote:
>
> > The advantage is only in what you have to explain about the object. In
> > the former case, you can simply say "it's an iterator over the keys"
> > and they can understand it with their existing knowledge of iterators.
>
> "it's an iterator over the keys"
>
> They use their knowledge of iterators (a standard concept in Python
> 2.2+).
>
> > On the other hand, when they're told "it's a dict key view object",
> > they can't use any existing knowledge. They have to go and look up the
>
> "it's a set view of the keys"
>
> They use their knowledge of sets (a standard concept in Python 2.3+) and
> views (a standard concept in Python 2.6+).
>
> The standard concept of a view will be something like:
>
> A view is a lightweight object that implements an interface by
> delegating to an underlying object. The underlying object cannot be
> changed through the view, but could be changed directly, in which case
> the view will reflect the new contents of the object.
>
> Note that some changes to the underlying object may invalidate the view,
> in which case using it will throw an exception.

No, this only invalidates an in-progress iterator.

> Note also that there is nothing preventing someone from creating a
> view-like class that allows changing the underlying object through it,
> but such a class should probably not be described as a view.

You can also think of dict views as a straightforward application of
the GoF adapter pattern.

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to