python 中如何用装饰器装饰类的方法?
巴扎黑
巴扎黑 2017-04-17 16:46:27
0
1
249
def myzsq(func):
    def wraper():
        print 'begin'
        func()
        print 'end---'
    return wraper
class TestMyClass:
    def __test(self):
        print 'test-----123123-'
    @myzsq
    def run(self):
        self.__test()

t1 = TestMyClass()
t1.run()

报错了
Traceback (most recent call last):
File "D:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pycharm\utrunner.py", line 116, in <module>

modules = [loadSource(a[0])]

File "D:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pycharm\utrunner.py", line 40, in loadSource

module = imp.load_source(moduleName, fileName)

File "D:\python-test\testclass.py", line 35, in <module>

t1.run()

TypeError: wraper() takes no arguments (1 given)

巴扎黑
巴扎黑

Antworte allen(1)
洪涛

self 是参数

得用带参数的装饰器

def decorator(args):
    def _deco(func):
        def _func(self):
            print args
            print 'gooooo'
            func(self)
            print 'fooo'
        return _func

    return _deco
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!