用类装饰器装饰类方法 [英] Decorate class-method with class-decorator

查看:77
本文介绍了用类装饰器装饰类方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用类装饰器来装饰类方法.例如

I'm trying to decorate class method using class-decorator. For example

class MyDecorator(object):
    def __init__(self,param1):
        self.param1 = param1
        # do some action with param1

    def __call__(self,func):
        def wrapped(*args,**kwargs):
             print "in wrapper:"
             func(*args,**kwargs)

        return wrapped

还有我的一些课:

class A:
    @MyDecorator("Blablabla")
    def func1(arg1,arg2,arg3):
         print (arg1,arg2,arg3)

但是当我做下一个动作时:

but when I do the next action:

a = A()
a.func(1,2,3)

我收到以下错误:

TypeError: func1() takes exactly 3 arguments (4 given)

推荐答案

class A:
    @MyDecorator("Blablabla")
    def func1(self, arg1, arg2, arg3):
        print (arg1,arg2,arg3)

您需要将 self 参数添加到您的函数中.

You need to add the self argument to your function.

这篇关于用类装饰器装饰类方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆