2017-12-01 7 views
3
s = requests.Session() 
a1=s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 


a2 = requests.Session().get('http://httpbin.org/cookies/set/sessioncookie/123456789') 

なぜa1 != a2ですか?
私の理解によると、a1とa2は等しいですが、実際にはa1とa2は等しくないのですか?同じようにはどちらか動作しません使用変数名の方法は変数を持たない方法と同じではありませんか?

+0

類似の質問が検索された場合、よりよく理解できるように、回答を受け入れることを検討してください –

答えて

0

>>> a1 = requests.Session().get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
>>> a2 = requests.Session().get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
>>> a1 == a2 
False 

比較が実装されていない限り、request.Session().get()戻っクラスのインスタンス

>>> type(a1) 
<class 'requests.models.Response'> 

あなたは通常、直接、クラスのインスタンスを比較することはできませんのでですクラスコードで

あなたは、JSON応答を比較できます。

>>> a1.json() == a2.json() 
True 
1

そのcomparrisonでは、あなたのクラスではなく、値のインスタンスを比較します。よりよく理解するために

a1

a2いくつかのURLを要求し、いくつかのID(例えば12345)でセッションの新しいインスタンスであるいくつかのID(例:56789)とのセッションの別のインスタンスです、しかし、同じではありません!

a1 == a2 is equivalent to 12345 == 56789 

値を比較するために、ご希望の関数の出力に変数を設定します持っています。例:

a1.json() == a2.json() 
関連する問題