0
にvarsは:Pythonのアクセス機能は、私は次のようにしたいデコレータ
のiは、以下の機能を持っているとしましょう:
def query(self, url, method = 'GET',payload=None):
if method == "GET":
result = requests.get(self.api_base_url+url, auth=self.__auth_token, verify=False)
print (result)
elif method == "POST":
result = requests.post(self.api_base_url+url, auth=self.__auth_token, data=payload, verify=False)
print(result)
elif method == "PUT":
result = requests.put(self.api_base_url+url, auth=self.__auth_token, data=payload, verify=False)
print(result)
私はそれらの残りの呼び出しが必要な時間を測定します。だから私は休憩の時間を測定するデコレータを構築し始めた。
def timing(f):
def wrap(*args):
time1 = time.time()
ret = f(*args)
time2 = time.time()
time_took = time2-time1
print (time_took)
return wrap
ここではペイロードを印刷します。しかし、PUTリクエストとPOSTリクエストだけで、GETリクエストではありません。ですから、私はデコレータで引数method
をチェックする必要がありますが、私はデコレータ内でこの引数にアクセスできません。特に、私はこのような何かをしたい:
def timing(f):
def wrap(*args):
time1 = time.time()
ret = f(*args)
time2 = time.time()
time_took = time2-time1
if args[0].method == 'PUT' and args[0].method == 'POST'
print (time_took + args.[0].payload)
else:
print (time_took)
return wrap
質問:
どのように私は私のデコレータ内の関数の引数にアクセスすることができますか?
おかげであなたがしようとしたと同様
問題は、引数 "method"が "args"リスト内にないことです。どうして ? print args [0]は私のクラスのオブジェクトを表示します – Constantine
@ Constantineこれはキーワード引数として渡すためです。私の更新された答えを見てください。 – DeepSpace
kwargsは空です。なぜ私は理解していない – Constantine