Как я добавляю метод с декоратором к классу в Python?

Как я добавляю метод с декоратором к классу? Я попробовал

def add_decorator( cls ):
    @dec
    def update(self):
        pass

    cls.update = update

использование

 add_decorator( MyClass )

 MyClass.update()

но MyClass.update не имеет декоратора

@dec не применялся к обновлению

Я пытаюсь использовать это с orm.reconstructor в sqlalchemy.

5
задан Timmy 24 April 2010 в 04:35
поделиться

2 ответа

Если вам нужен декоратор класса в python >= 2.6, вы можете сделать это

def funkyDecorator(cls):
    cls.funky = 1

@funkyDecorator
class MyClass(object):
    pass

или в python 2.5

MyClass = funkyDecorator(MyClass)

Но похоже, что вас интересует декоратор метода, для которого вы можете сделать это

def logDecorator(func):

    def wrapper(*args, **kwargs):
        print "Before", func.__name__
        ret = func(*args, **kwargs)
        print "After", func.__name__
        return ret

    return wrapper

class MyClass(object):

    @logDecorator
    def mymethod(self):
        print "xxx"


MyClass().mymethod()

Output:

Before mymethod
xxx
After mymethod

Короче говоря, вам нужно просто поставить @orm.reconstructor перед определением метода

.
6
ответ дан 14 December 2019 в 13:30
поделиться

В классе, который представляет вашу SQL запись,

from sqlalchemy.orm import reconstructor

class Thing(object):
    @reconstructor
    def reconstruct(self):
        pass
0
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: