Python:如何弃用函数别名

Sie*_*ebe 6 python alias function deprecated

正如标题所述,我想要实现的目标如下:我有一个Python代码库,我想将其所有函数从camelCasing重命名为underscore_naming。为了保持向后兼容性,我重命名了所有函数,但为所有旧名称创建了函数别名。到目前为止,一切都很好。

现在我想做的是将弃用警告添加到函数别名中,最好采用如下方式:

def do_something():
    ...


@deprecated(deprecated_in='2.0',
            details='All functions have been adapted to fit the PEP8 standard. Please use "do_something" instead')
doSomething = do_something
Run Code Online (Sandbox Code Playgroud)

这样,如果有人使用旧的 API 调用,他们将收到弃用警告。我查看了 deprecationDeprecated,但它们似乎都不适用于别名。

我意识到我可以为每个已弃用的名称创建一个函数定义并对其进行修饰,但这会失去函数别名的优雅性,并导致代码变得更加混乱。有人有好的建议来实现我想要的吗?

Sie*_*ebe 4

实际上,我最终选择了不同的解决方案,类似于Method and property aliases with custom docstring in Python中建议的解决方案。

我将我的代码修改为

@alias('doSomething', deprecated=True)
def do_something():
    ...

Run Code Online (Sandbox Code Playgroud)

并向别名装饰器添加了弃用警告。