Форум сайта python.su
1
ДОбрый день господа.
Наткнулся на вещь, которую не могу понять с наскоку.
Имеется простой класс и доктест в __инит__
class Game: zone = None def __init__(self): """ >>> g = Game() >>> z = g.set_zone() >>> z is g True >>> g.zone_number, g.x, g.y (0, 9, 4) """
def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class Game: ....
Testing started at 7:47 PM ...
Empty test suite.
Офлайн
568
from functools import wraps def my_decorator(f): @wraps(f) # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! def wrapper(*args, **kwds): print 'Calling decorated function' return f(*args, **kwds) return wrapper @my_decorator def example(): """Docstring""" print 'Called example function' example() example.__name__ example.__doc__
Офлайн
1
Сенкс, Фиш.
Да, на подмену функции в обычном декораторе не обращал раньше внимания.
Если используются декораторы, то надеятся на доктесты, пожалуй, не стОит)
Про wraps, кроме доки, кратко и понятно прочитал на SO http://stackoverflow.com/questions/308999/what-does-functools-wraps-do
Офлайн