2012-04-07 22 views
1

に私のpythonに新しいですし、一例ではPythonのメソッド呼び出し

import functools 
... 
.. 

def wrapper(func): 
      @functools.wraps(func) 
      .... 

を次のコードを見ては、@記号はここで何を意味するのでしょうか?

答えて

1

Python decoratorsの構文です。関数、メソッド、クラスなどのオブジェクトをとり、オブジェクトの呼び出し時や結果を返すときに何かを実行できる関数またはメソッドです。

0

この例では、重要な部分を除外しています。同様のものがofficial functools.wrap docで見つかった、とのように見えることができます。この例では

from functools import wraps 
def my_decorator(f): 
    @wraps(f) 
    def wrapper(*args, **kwds): 
     print('Calling decorated function') 
     return f(*args, **kwds) 
    return wrapper 

、名前があなたに関してに巻き込ま少しあります。この1つで@wraps(f)は機能wrapper(直後に来るもの)を装飾しています。

Pythonデコレータが何であるかについて、多くの情報源があります。 Hereの1つです。

+0

私は、デコレータがラッパー機能を装飾していると見てきました。私はいくつかの例をコード化しましたが、今は明らかです。ありがとうございました! – user1318842

+0

@ user1318842:ようこそ。私はあなたがすぐに[受諾](http://meta.stackexchange.com/a/5235/177799)この回答を期待しています:) –

関連する問題