python怎么自动中文版_如何在Python中自动公开和修饰方法的函数版本?

我想将类的方法公开为本地范围内的函数(在装饰之后)。例如,如果我有一个类和decorator:def some_decorator(f):

...transform f...

return decorated_f

class C(object):

def __init__(self,x):

self.x = x

def f(self,y):

"Some doc string"

return self.x + y

def g(self,y,z):

"Some other doc string"

return self.x + y + z

如果我不关心流程的自动化,我可以在模块中添加以下代码:

^{pr2}$

结果如下所示c = C(0)

f(c,1) == c.f(1)

但我希望能自动完成。比如:my_funs = expose_methods(MyClass)

for funname, fun in my_funs.iteritems():

locals()[funname] = some_decorator(fun)

foo = MyClass(data)

some_functionality(foo,*args) == foo.some_functionality(*args)

会做到这一点(尽管这样声明局部变量有点错误)。我怎样才能使方法的所有相关属性正确地转换为函数版本呢?如有任何建议,我将不胜感激。在

p.S

我知道我可以装饰类实例的方法,但这不是我真正想要的。它更多的是关于(1)对函数版本语法的偏好(2)事实上,我的装饰器以奇特和优化的方式使函数映射到对象集合上。通过装饰方法获得行为(2)将需要我的集合类从它们包含的对象继承属性,这与集合语义是正交的。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值