【问题标题】:Python: How to deprecate a function aliasPython:如何弃用函数别名
【发布时间】:2021-12-03 10:46:05
【问题描述】:

正如标题所述,我想要实现的目标如下: 我有一个 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

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

我意识到我可以为每个不推荐使用的名称创建一个函数定义并对其进行装饰,但这会失去函数别名的优雅,并且会产生更多肮脏的代码。有没有人有一个很好的建议来实现我想要的?

【问题讨论】:

  • 听起来像模块__getattr__的工作。

标签: python function alias deprecated


【解决方案1】:

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

我将代码修改为

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

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

【讨论】:

  • 目前正在考虑增加弃用标签的价值。它现在并没有真正添加那么多,而且 API 看起来相当干净。
猜你喜欢
  • 1970-01-01
  • 2018-01-04
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
相关资源
最近更新 更多