python 方法继承_Python可继承的函数

Is there a way in Python to either ``type'' functions or for functions to

inherit test suites? I am doing some work evaluating several different

implementations of different functions with various criteria (for

example I may evaluate different sort functions based on speed for the

array size and memory requirements). And I

want to be able to automate the testing of the functions. So I would

like a way to identify a function as being an implementation of

a certain operator so that the test suite can just grab all functions

that are implementation of that operator and run them through the

tests.

My initial thought was to use classes and subclasses, but the class

syntax is a bit finnicky for this purpose because I would first have

to create an instance of the class before I could call it as a

function... that is unless there is a way to allow init to return

a type other than None.

Can metaclasses or objects be used in this fashion?

解决方案

Functions are first class objects in Python and you can treat them as such, e.g. add some metadata via setattr:

>>> def function1(a):

... return 1

...

>>> type(function1)

>>> setattr(function1, 'mytype', 'F1')

>>> function1.mytype

'F1'

Or the same using a simple parametrized decorator:

def mytype(t):

def decorator(f):

f.mytype = t

return f

return decorator

@mytype('F2')

def function2(a, b, c):

return 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值