我想通过将名称作为字符串传递给自身来重命名python函数。
例如。
def ihavenoname(new_name="cheese"):
something.this_function.name= new_name
# https://stackoverflow.com/questions/251464/how-to-get-a-function-name-as-a-string-in-python
import traceback
stack = traceback.extract_stack()
filename, codeline, funcName, text = stack[-2]
return funcName
>>>"cheese"==ihavenoname() # True
这可能吗?
答案 0 :(得分:1)
您可以通过更改__name__
重命名功能。您可以简单地创建一个装饰器,并使用它来重命名函数名称-
def rename(newname):
def decorator(fn):
fn.__name__ = newname
return fn
return decorator
@rename('new name')
def f():
pass
但是请注意,您的功能只能通过原始名称访问