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

巴扎黑
巴扎黑

répondre à tous(1)
洪涛

self 是参数

得用带参数的装饰器

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

    return _deco
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!