2011-06-13 52 views
-1

我只是在蟒蛇裝飾玩耍,享受的經驗,給我裝飾類似乎更清潔對我來說比裝飾功能,所以我一直在玩這個設計帶參數,改變類型

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' 
Python的裝飾類

問題與上面的代碼是返回

------------------------------------------------------------ 
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和不可調用。

任何想法?

編輯:請不要再回答問題已經解決,我明白我做錯了什麼。它是一個錯字和im定義一個功能不是類

回答

2

你的returns()函數什麼也沒有返回。你的意思是讓它成爲一堂課嗎?

+0

林要去bash的我的頭,感謝察覺這 – 2011-06-13 08:43:34

2

也許你想更換

def returns(object): 

通過

class returns(object): 
+0

察覺到而已,平時我不會做出那樣的根本性錯誤 – 2011-06-13 08:45:25