python 中如何用装饰器装饰类的方法?
巴扎黑
巴扎黑 2017-04-17 16:46:27
0
1
248
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)

巴扎黑
巴扎黑

全部回覆(1)
洪涛

self 是參數

得用參數的裝飾器

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

    return _deco
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!