Python可继承的函数

时间:2014-07-07 21:24:43

标签: python oop inheritance metaclass

Python中是否有一种方法可以“输入”函数或函数 继承测试套件?我正在做一些评估几种不同的工作 具有各种标准的不同功能的实现(for 例如,我可以根据速度来评估不同的排序函数 数组大小和内存要求)。和我 希望能够自动化功能的测试。所以我愿意 比如将函数标识为实现的方法 某个运算符,以便测试套件可以只获取所有功能 这是该运算符的实现并通过它运行它们 试验。

我最初的想法是使用类和子类,但是类 为了这个目的,语法有点笨拙,因为我会先做 在我将其称为a之前创建该类的实例 功能......除非有办法允许 init 返回 除None之外的其他类型。

可以这种方式使用元类或对象吗?

2 个答案:

答案 0 :(得分:3)

函数是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

答案 1 :(得分:0)

我道歉,因为我无法发表评论,只是为了澄清你所说的&#34;在我将其称为函数之前,我首先必须创建该类的实例...&#34;这不能完成你想做的事吗?

    class functionManager:

        def __init__(testFunction1 = importedTests.testFunction1):
           self.testFunction1() = testFunction1


    functionManager = functionManager()

然后只需在您想要使用的地方加入from functionManagerFile import functionManager行?