Python 可继承函数
Posted
技术标签:
【中文标题】Python 可继承函数【英文标题】:Python inheritable functions 【发布时间】:2014-08-28 11:57:30 【问题描述】:在 Python 中有没有一种方法可以“类型”函数或函数 继承测试套件?我正在做一些评估几种不同的工作 具有不同标准的不同功能的实现(对于 例如,我可以根据速度评估不同的排序函数 数组大小和内存要求)。和我 希望能够自动测试功能。所以我会 就像一种将函数识别为实现的方法 某个操作员,以便测试套件可以获取所有功能 这是该运算符的实现并通过 测试。
我最初的想法是使用类和子类,但是类 为此目的,语法有点繁琐,因为我首先会拥有 在我可以调用它之前创建一个类的实例 函数...除非有办法让 init 返回 None 以外的类型。
可以以这种方式使用元类或对象吗?
【问题讨论】:
【参考方案1】:函数是 Python 中的第一类对象,您可以这样对待它们,例如通过setattr
添加一些元数据:
>>> def function1(a):
... return 1
...
>>> type(function1)
<type 'function'>
>>> setattr(function1, 'mytype', 'F1')
>>> function1.mytype
'F1'
或者同样使用一个简单的参数化装饰器:
def mytype(t):
def decorator(f):
f.mytype = t
return f
return decorator
@mytype('F2')
def function2(a, b, c):
return 2
【讨论】:
【参考方案2】:我很抱歉,因为我无法发表评论,只是为了澄清您所说的“我首先必须创建该类的一个实例,然后才能将其作为函数调用......”这是否无法完成您想要做的事情?
class functionManager:
def __init__(testFunction1 = importedTests.testFunction1):
self.testFunction1() = testFunction1
functionManager = functionManager()
然后只需将from functionManagerFile import functionManager
行包含在您想使用的任何地方?
【讨论】:
它有效,但如果可能的话,我想尽量减少语法。 也许使用装饰器?就像定义诸如 @candidate_function('some_key') 之类的函数对象,并在其上运行测试等。以上是关于Python 可继承函数的主要内容,如果未能解决你的问题,请参考以下文章