Как я добавляю метод с декоратором к классу? Я попробовал
def add_decorator( cls ):
@dec
def update(self):
pass
cls.update = update
использование
add_decorator( MyClass )
MyClass.update()
но MyClass.update не имеет декоратора
@dec не применялся к обновлению
Я пытаюсь использовать это с orm.reconstructor
в sqlalchemy.
Если вам нужен декоратор класса в 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
перед определением метода
В классе, который представляет вашу SQL запись,
from sqlalchemy.orm import reconstructor
class Thing(object):
@reconstructor
def reconstruct(self):
pass