bea*_*rdc 7 python attributes function
我尝试了几种方法来更改定义中的函数名称,但是它们都失败了.
>>> def f():
pass
>>> f.__name__
'f'
>>> def f():
f.__name__ = 'new name'
>>> f.__name__
'f'
>>> def f():
self.__name__ = 'new name'
>>> f.__name__
'f'
Run Code Online (Sandbox Code Playgroud)
但我可以在定义后更改name属性.
>>> def f():
pass
>>> f.__name__ = 'new name'
>>> f.__name__
'new name'
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在定义中更改/设置它(除了使用装饰器)?
Thi*_*ter 18
在执行该函数之前,不会执行函数体.你可以使用装饰器:
def rename(newname):
def decorator(f):
f.__name__ = newname
return f
return decorator
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
@rename('new name')
def f():
pass
print f.__name__
Run Code Online (Sandbox Code Playgroud)
但是,该功能仍然只能作为f.