[Types-sig] QueryProtocol
Paul Prescod
paulp@ActiveState.com
Wed, 21 Mar 2001 10:04:58 -0800
"Clark C. Evans" wrote:
>
>...
>
> I was vague here beacuse I didn't know what to do.
> Perhaps "None" should be returned?
That would probably be easiest. If the caller wants to require an
interface, they can throw the exception themself.
> ...
> > > In addition, a built-in query method could be introduced that
> > > calls the __query__ method on a given object.
> >
> > You mean "query function."
>
> How about "query object"
If you are talking about a built-in function, you should call it a
built-in function. like hasattr, getattr, etc.
>...
> > I don't know much about __iter__ but my first instinct is to be careful
> > there. When you return an interface, you are semantically returning a
> > view into the object. When you return an iterator, you are semantically
> > returning another object that happens to have special knowledge of the
> > first. In other words, interfaces should have no state. Iterators are
> > *all* state. :)
>
> An iterator is a "view" of a particular object. The state
> the view must maintain depends upon the requirements.
> I don't see any semantic difficulty here at all.
Here's my definition of "view". If x and y are views over the same
object then at any time I should be able to call x.foobar() or
y.foobar() and expect to get back the same result. If x.foobar() can
return a different result than y.foobar() then the objects are really
different objects, not just views into a single object.
--
Take a recipe. Leave a recipe.
Python Cookbook! http://www.activestate.com/pythoncookbook