On Thu, Mar 6, 2008 at 12:17 PM, Guillermo
<[EMAIL PROTECTED]> wrote:
> > You can also get the dynamic polymorphism without invoking inheritance
>  > by specifying a protocol that the values in your dict must implement,
>  > instead. Protocols are plentiful in Python, perhaps more popular than
>  > type hierarchies.
>
>  I'm used to languages with stricter rules than Python. I've read a bit
>  about Python protocols, but where could I get some more info on
>  implementation details? Sounds very interesting.

A protocol is just an interface that an object agrees to implement. In
your case, you would state that every object stored in your special
dict must implement the to_tagged_value method with certain agreeable
semantics.

Python implements sequence types, mapping types, iterators, file
streams, and other things with protocols.

For example, iterators must support the "next" and and "__iter__" methods.

Using a protocol instead instead of a type hierarchy requires less
boring boilerplate, and I suppose in Python will usuallly be
preferable except when you want to inherit implementation as well as
interface. In that case, inheritance often saves boilerplate cide
rather than increases it.

It's also misnomered as duck-typing (clearly it should be nomed quack-typing).

-- 
Neil Cerutti <[EMAIL PROTECTED]>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to