Are decorators really that different from metaclasses...

Steven Bethard steven.bethard at
Tue Aug 31 21:56:44 CEST 2004

I wrote:
> What you're suggesting is that given:
> def f1():
>     __author__ = 'Steve'
> and
> def f2():
>     author = 'Steve'
> in f1, the assignment to __author__ occurs in the function's namespace, but 
> in f2, the assignment to author occurs in the local namespace.  Clearly 
> then, the __xxx__ format (if at the beginning of a function) changes the 
> namespace to which an assignment applies.

Note that the parallel for classes would be if, given:

class F1:
    __author__ = 'Steve'


class F2:
    author = 'Steve'

that the __author__ assignment in F1 occured in one namespace, while the 
author assignment in F2 occured in another namespace.  (Something like 
__author__ only being available from the class object, while author was only 
available from class instance objects.)  Python could almost certainly be 
treat __xxx__ variables to work this way, but it's not the way it works 
*now*.  This is why I say that you're introducing a totally new semantics to 
__xxx__ assignments.


More information about the Python-list mailing list