Possible to change function name in definition?
attributes, function, python
Solution
The function body is not executed until you execute the function. You could use a decorator though:
def rename(newname):
def decorator(f):
f.__name__ = newname
return f
return decorator
And then use it like this:
@rename('new name')
def f():
pass
print f.__name__
However, the function is still only reachable as `f`.
Problem
I tried several ways to change the function name in the definition, but they failed. ``` >>> def f(): pass >>> f.__name__ 'f' >>> def f(): f.__name__ = 'new name' >>> f.__name__ 'f' >>> def f(): self.__name__ = 'new name' >>> f.__name__ 'f' ``` But I can change the name attribute after defining it. ``` >>> def f(): pass >>> f.__name__ = 'new name' >>> f.__name__ 'new name' ``` Any way to change/set it in the definition (other than using a decorator)?