gpt4 book ai didi

python - 如何在 2.6 的类中定义多参数装饰器

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:00 25 4
gpt4 key购买 nike

通常不要在 Python 中进行 OO 编程。这个项目需要它并且遇到了一些麻烦。这是我试图找出问题所在的临时代码:

class trial(object):
def output( func, x ):
def ya( self, y ):
return func( self, x ) + y
return ya
def f1( func ):
return output( func, 1 )
@f1
def sum1( self, x ):
return x

无法编译。我试图将 @staticmethod 标记添加到“输出”和“f1”函数,但无济于事。通常我会这样做

def output( func, x ):
def ya( y ):
return func( x ) + y
return ya

def f1( func ):
return output( func, 1 )

@f1
def sum1( x ):
return x

这确实有效。那么,我该如何在类里面进行呢?

最佳答案

你的方法装饰器不需要成为类的一部分:

def output(meth, x):
def ya(self, y):
return meth(self, x) + y
return ya

def f1(meth):
return output(meth, 1)

class trial(object):
@f1
def sum1( self, x ):
return x

>>> trial().sum1(1)
2

我倾向于在装饰器中使用 meth 而不是 func 我知道我将应用于方法,只是为了让它在我自己的脑海中保持清晰。

关于python - 如何在 2.6 的类中定义多参数装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3023448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com