[Python-Dev] Re: Plea for function/method syntax sugar (PEP 318, with a different syntax)

Thomas Heller theller at python.net
Thu Feb 19 14:45:13 EST 2004


"Phillip J. Eby" <pje at telecommunity.com> writes:

> At 05:06 PM 2/19/04 +0000, Michael Hudson wrote:
>>Bob Ippolito <bob at redivi.com> writes:
>>
>> > Also note that the patch also adds the same sugar to classes, so you
>> > could use it in lieu of metaclasses for some cases (like transforming
>> > some members that follow a naming convention into properties):
>> >
>> >  >>> class Foo(object) [type]:
>> > ...   pass
>> > ...
>> >  >>> Foo
>> > <type 'type'>
>>
>>FWIW, I'm rather less convinced this is useful.
>
> class Foo(object) [instancesProvide(IFoo)]:
>      ...
>
> is actually somewhat more useful.  Right now, the packages that do
> this sort of thing (Zope and PyProtocols) use a pseudometaclass in
> order to spell it more like this:
>
> class Foo(object):
>      protocols.advise(instancesProvide=[IFoo])
>
> Being able to spell it the other way would allow a less "magical"
> implementation for various types of class metadata.

But there is not really a dramatical advantage over this notation, with
a suitable metaclass:

class Foo(object):
    __metaclass__ = SomeMetaclass
    __provides__ = [IFoo]

And my main question (top myself, maybe) with the change is:

There should really be some killer features in 2.4 which allow to
drop support for Python 2.2 and 2.3 in modules using this new syntax.
None of the mentioned use cases apply to the standard library.

Thomas




More information about the Python-Dev mailing list