我可以用python中的decorator包装一个完整的类吗?

2024-10-03 23:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有很多参数的复杂函数。我的想法是使用类、模块、函数等,在这里我定义了参数和过程,我将传递给大函数

我写了这段代码。但我不知道这样做是否“合法”

from functools import wraps

def myfunc (value) :
    print 'myfunc' , value

def somewrapper  (f):
    @wraps(f)
    def decorated_class () :
        print "inside wrapper"
        print hasattr(f,'foomember')
        return myfunc ('wrapped')
    return decorated_class

@somewrapper
class mymodelclass :
    some = 'value'
    def foomember () :
        return 'inside class'

mymodelclass()

Tags: 模块函数参数returnvaluedefmyfuncclass
1条回答
网友
1楼 · 发布于 2024-10-03 23:27:11

是的,类修饰符是受支持的,并且完全可以在Python中使用。这个功能是在python2.6中通过PEP 3129引入的。因此,以下两段代码是相同的:

class A:
  pass
A = foo(bar(A))


@foo
@bar
class A:
  pass

您提供的代码示例对我来说意义不大,因为您已经用一个函数对象替换了mymodelclass,该函数对象在执行时不返回任何内容,但看起来这只是一个用来演示该思想的玩具示例

相关问题 更多 >