On 12/7/06, Tim Hochberg <[EMAIL PROTECTED]> wrote:
> Let me throw out an examples of how this could look.
>
>    @implements(sequence.__getitem__, sequence.__len__)
>    class MySequence:
>        #....
>
>    @implements(mapping.__getitem__, mapping.keys, mapping.__len__)
>    class MyMapping:
>        #....
>
>    #...
>
>    # supports reads better than has_ability to me in this context.
>    if supports(someobject, mapping.__getitem__):
>       # do something


FWLIW, I like the concept of a ``supports()`` method like this, and I
think it shouldn't be too foreign to Python users syntactically.  I'm
sure I've seen code like this before::

    if hasattr(someobject, '__getitem__'):
        # do something

And the only real difference between the ``hasattr()`` code and the
``supports()`` code is that the ``supports()`` code not only
guarantees the existence of the method, but guarantees that the method
conforms to the expected semantics.

For the sake of DRY, I'd prefer to see::

    class MyMapping:
        def mapping.__getitem__(self, key):
            ...
        def mapping.__len__(self):
            ...

instead of::

    @implements(mapping.__getitem__, mapping.__len__)
    class MyMapping:
        def __getitem__(self, key):
            ...
        def __len__(self):
            ...

but since we don't have syntactic support for either of these variants
right now, I think what would be most helpful is a proof-of-concept
patch that worked something like::

    class MyMapping:
        def __getitem__(self, key):
            ...
        def __len__(self):
            ...
    implements(MyMapping, mapping.__getitem__, mapping.__len__)


STeVe
-- 
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
        --- Bucky Katt, Get Fuzzy
_______________________________________________
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