[Python-Dev] Definining properties - a use case for class decorators?

Michele Simionato michele.simionato at gmail.com
Wed Oct 19 12:10:53 CEST 2005


On 10/19/05, Paul Moore <p.f.moore at gmail.com> wrote:
>
> One question - in the expansion, "name" is used on both sides of the
> assignment. Consider
>
>     something name():
>         <definitions>
>
> This expands to
>
>     name = something(name, (), <dict>)
>
> What should happen if name wasn't defined before? A literal
> translation will result in a NameError. Maybe an expansion
>
>     name = something('name', (), <dict>)
>
> would be better (ie, the callable gets the *name* of the target as an
> argument, rather than the old value).
>
> Also, the <definitions> bit needs some clarification. I'm guessing
> that it would be a suite, executed in a new, empty namespace, and the
> <dict-of-definitions> is the resulting modified namespace (with
> __builtins__ removed?)
>
> In other words, take <definitions>, and do
>
>     d = {}
>     exec <definitions> in d
>     del d['__builtins__']
>
> then <dict-of-definitions> is the resulting value of d.
>
> Interesting idea...
>
> Paul.
>

<name> would be a string and <dict-of-definitions> a dictionary.
As I said, the semantic would be exactly the same as the current
way of doing it:

class <name> <args>:
    __metaclass__ = <callable>

I am just advocating for syntactic sugar, the functionality is already there.

           Michele Simionato


More information about the Python-Dev mailing list