[Python-Dev] Re: __metaclass__ and __author__ are already decorators
"Martin v. Löwis"
martin at v.loewis.de
Sun Aug 22 09:21:39 CEST 2004
More information about the Python-Dev mailing list
Sun Aug 22 09:21:39 CEST 2004
- Previous message: [Python-Dev] Re: __metaclass__ and __author__ are already decorators
- Next message: [Python-Dev] Re: __metaclass__ and __author__ are already decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Paul Morrow wrote: >> The items you describe are not decorators, they are attributes. The >> current syntax for decorators is 'x = decorator(x)'. >> > > In today's Python that's of course true, but these 'attributes' are used > to supply meta info about the class. They *describe* the class. They > are never intended to be inherited by instances of the class. So in > this sense, they are very much more like decorators than (normal) class > attributes. No, that makes them completely unlike function decorators. Function decorators do not describe something, they modify something (namely, the thing that is bound to the function's name). Some attributes have a run-time meaning, like __metaclass__; others, like __author__, have not. Unfortunately, the meaning of __metaclass__ is conceptually different from decorators: the metaclass is evaluated *before* the class is constructed; the decorators are evaluated *after* the function is constructed. > So providing definitions for __xxx__ attributes is not done for the same > purpose as the other attributes. They are special. Therefore, let's > formally acknowledge that and call them 'decorators'. I acknowledge that they are special, and call them "special attributes". I won't call that decorators, because that means something else. > 2. All magic methods in today's Python are invoked 'magically' (are > called indirectly; not called directly by any user code). Correct. For each special attribute, the interpreter needs advance knowledge of the name of the attribute. Not so for decorators: the interpreter does not need advance knowledge - you can define your own function decorators, and Python will support them because of the leading @. Regards, Martin
- Previous message: [Python-Dev] Re: __metaclass__ and __author__ are already decorators
- Next message: [Python-Dev] Re: __metaclass__ and __author__ are already decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list