Найти - Пользователи
Полная версия: singleton и doctest в __init__
Начало » Python для новичков » singleton и doctest в __init__
1
alexzander77
ДОбрый день господа.
Наткнулся на вещь, которую не могу понять с наскоку.

Имеется простой класс и доктест в __инит__
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:
    ....
, то PyCharm не видит доктест
Testing started at 7:47 PM ...
Empty test suite.

Вопрос - почему так может быть?
FishHook
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__
alexzander77
Сенкс, Фиш.
Да, на подмену функции в обычном декораторе не обращал раньше внимания.

Если используются декораторы, то надеятся на доктесты, пожалуй, не стОит)

Про wraps, кроме доки, кратко и понятно прочитал на SO http://stackoverflow.com/questions/308999/what-does-functools-wraps-do



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB