我有来自requests
import requests
class MyClass(object):
s = requests.Session()
def test(self):
print self.s
然后我测试了
In[3]: a = mymodule.MyClass()
In[4]: b = mymodule.MyClass()
In[5]: print a
<mymodule.MyClass object at 0x10e074c50>
In[6]: print b
<mymodule.MyClass object at 0x10e074d10>
In[7]: a.test()
<requests.sessions.Session object at 0x10dbe5550>
In[8]: b.test()
<requests.sessions.Session object at 0x10dbe5550>
a和b中的会话对象是如何相同的?我希望有两个不同的会话创建一个用于a,另一个用于b。
我认为Session
不是单身人士。如图所示,调用requests.Sessions()
两次,创建两个不同的Session实例。
那么为什么a
和b
中的会话是一样的呢?
In[13]: s1 = requests.Session()
In[14]: s2 = requests.Session()
In[15]: print s1
<requests.sessions.Session object at 0x10e089210>
In[16]: print s2
<requests.sessions.Session object at 0x10e089650>
答案 0 :(得分:2)
s
在您的情况下是一个类属性 - 它将初始化一次并在所有类实例之间共享。将会话改为实例变量:
import requests
class MyClass(object):
def __init__(self):
self.s = requests.Session()
def test(self):
print self.s