有没有一种方法可以从函数内部重命名python函数?

时间:2018-08-18 16:38:10

标签: python

我想通过将名称作为字符串传递给自身来重命名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

这可能吗?

1 个答案:

答案 0 :(得分:1)

可以通过更改__name__重命名功能。您可以简单地创建一个装饰器,并使用它来重命名函数名称-

def rename(newname):
    def decorator(fn):
        fn.__name__ = newname
        return fn
    return decorator

@rename('new name')
def f():
    pass

但是请注意,您的功能只能通过原始名称访问