Python可继承函数
Python中有没有一种方法可以“键入”函数,或者让函数 继承测试套件?我正在做一些工作,评估几种不同的 使用各种标准实现不同的功能(用于 例如,我可以根据服务器的速度计算不同的排序函数 阵列大小和内存要求)。而我 希望能够自动测试功能。所以我会 类似于将函数识别为 一个特定的操作符,这样测试套件就可以获取所有的函数 这是该操作符的实现,并通过 测试 我最初的想法是使用类和子类,但是 出于这个目的,语法有点芬尼基,因为我首先会 创建类的实例,然后才能将其作为 功能。。。除非有办法允许init返回 非无的类型Python可继承函数,python,oop,inheritance,metaclass,Python,Oop,Inheritance,Metaclass,Python中有没有一种方法可以“键入”函数,或者让函数 继承测试套件?我正在做一些工作,评估几种不同的 使用各种标准实现不同的功能(用于 例如,我可以根据服务器的速度计算不同的排序函数 阵列大小和内存要求)。而我 希望能够自动测试功能。所以我会 类似于将函数识别为 一个特定的操作符,这样测试套件就可以获取所有的函数 这是该操作符的实现,并通过 测试 我最初的想法是使用类和子类,但是 出于这个目的,语法有点芬尼基,因为我首先会 创建类的实例,然后才能将其作为 功能。。。除非有办法允许init返回
元类或对象可以以这种方式使用吗?我很抱歉,因为我无法发表评论,但只是为了澄清您所说的“我必须先创建一个类的实例,然后才能将其作为函数调用…”这难道不能完成您试图做的事情吗
class functionManager:
def __init__(testFunction1 = importedTests.testFunction1):
self.testFunction1() = testFunction1
functionManager = functionManager()
然后只需包含functionManagerFile import functionManager中的
行,无论您想在哪里使用它?函数是Python中的第一类对象,您可以这样对待它们,例如通过以下方式添加一些元数据:
这是可行的,但是如果可能的话,我想尽量减少语法。也许可以使用decorator?比如定义@candidate_function('some_key'),它将获取函数对象并对其运行测试,等等。
>>> 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