2017-01-31 11 views
0
def __init__(self): 
    self.headers={'Accept':'application/json'} 

def req1(self): 
    headers=self.headers 
    headers['bla']='bla' 
    headers['Content-Type']='application/json' 
    r=requests.post(url,headers=headers) 

def req2(self): 
    headers=self.headers 
    headers['bla']='bla' 
    r=requests.post(url + "/test1",headers=headers) 

を追加します。のpython-要求は自動的に、何らかの理由でHTTPヘッダ

私は逆の順序でこれらの機能を実行する:

req2() 
    req1() 

'のContent-Type' ヘッダのみreq1()で送信されます。

何が起こるのでしょうか?たぶん、リクエストしないでContent-Typeヘッダーを追加しますか?

は、今の私はそうのような問題を修正している:私はよりよい解決策を探しています

def req2(): 
    headers=self.headers 
    headers['bla']='bla' 
    del headers['Content-Type'] 
    r=requests.post(url + "/test1",headers=headers) 

。誰かが何が起こっているか説明できますか?

答えて

4

あなたが実際に辞書をコピーしていないself.headersからheadersを割り当てている、あなただけの別の参照を作成しています。その後、headersを更新すると、self.headersが更新され、両方が同じ正確なオブジェクトを指しているためです。

:あなたが実際に辞書をコピーする必要がある場合は、別の方法がある

、を参照してください。

関連する問題