我重构了我的旧代码,并希望根据pep8更改函数名。但我想保持与系统旧部分的向后兼容性(因为函数名是API的一部分,有些用户使用旧的客户端代码,所以不可能对项目进行完全重构)。
简单示例,旧代码:
def helloFunc(name):
print 'hello %s' % name
新的:
def hello_func(name):
print 'hello %s' % name
但这两种功能都应该起作用:
>>hello_func('Alex')
>>'hello Alex'
>>helloFunc('Alf')
>>'hello Alf'
我在想:
def helloFunc(name):
hello_func(name)
,但我不喜欢它(在项目中大约有50个函数,我想它看起来会很凌乱)。
最好的方法是什么(不包括重复购买)?有可能创造一个通用的装饰器吗?
谢谢。
虽然其他答案肯定是正确的,但将函数重命名为新名称并创建一个发出警告的旧名称可能会很有用:
可以将函数对象绑定到模块命名空间中的另一个名称,例如:
我认为目前最简单的事情就是创建对旧函数对象的新引用:
当然,如果将实际函数的名称更改为
hello_func
,然后将别名创建为:这仍然有点混乱,因为它不必要地扰乱了模块名称空间。为了解决这个问题,还可以有一个子模块提供这些“别名”。然后,对于您的用户来说,将
import module
更改为import module.submodule as module
非常简单,但您不会使模块名称空间变得混乱。你甚至可以使用
inspect
自动地(未经测试的)做类似的事情:相关问题 更多 >
编程相关推荐