Я просто играю с декораторами в python и наслаждаюсь опытом, для меня класс декоратора кажется мне чище, чем функции декоратора, поэтому я играл с этим дизайном
def returns(object):
"""Enforces return to a specific type"""
def __init__(self, returns):
self.returns = returns
def __call__(self, func):
def wrapped(*args):
out = func(*args)
return self.returns(out)
return wrapped
@returns(int)
def test():
return '4'
Проблема с приведенным выше кодомявляется то, что он возвращает
------------------------------------------------------------
Traceback (most recent call last):
File "", line 1, in <module>
File "", line 122, in runfile
execfile(filename, glbs)
File "", line 33, in <module>
@returns(int)
TypeError: 'NoneType' object is not callable
Мне интересно, почему я могу вызвать int () как функцию, и у нее есть вызываемый метод, но он говорит это здесь как NoneType и не вызывается.
Есть идеи?
РЕДАКТИРОВАТЬ: Пожалуйста, больше не отвечает, проблема была решена, и я понимаю, что я делал неправильно.Это опечатка, и я определяю функцию, а не класс