Properties/Decorators [WAS: Can I reference 1 instance of an object by more names ? rephrase]
Diez B. Roggisch
deets at nospam.web.de
Wed May 23 18:39:24 EDT 2007
Wildemar Wildenburger schrieb:
> Diez B. Roggisch wrote:
>> It is that very apply.
>>
>> And apply takes a function as argument + additional arguments, and
>> executes
>> that function, returning the result of that function-call. It was used
>> before the
>> f(*args, **kwargs)
>>
>> notation was introduced.
>>
>> Now what we have here is "value" as function, passed as single
>> argument to
>> apply (because decorators are just callables), which will invoke "value"
>> with no arguments. The result of that operation is the property-object,
>> that thus is returned by apply. And in the end gets assigned to the name
>> value in the cpu_ports-class.
>>
> Sooo clever :). But apply is deprecated ... can I do the same thing some
> other way?
Deprecated doesn't mean it's not available. And even if it goes away,
you can simply write it yourself:
def apply(f, *args, **kwargs):
return f(*args, **kwargs)
So, if you want to, you can introduce your own function, e.g.
def makeprop(f):
return f
and then do
class Foo(object):
@makeprop
def bar():
... # the fancy stuff
Diez
More information about the Python-list
mailing list