python - 跨类的多个实例的一个 session

标签 python session python-requests

我有来自请求的带有Session的MyClass类

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的session对象是同一个?我希望创建两个不同的 session ,一个为 a 创建,另一个为 b 创建。

我不认为Session是一个单例。如图所示,调用 requests.Sessions() 两次并创建两个不同的 Session 实例。 那么为什么ab中的session是相同的呢?

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>

最佳答案

s 在您的情况下是一个类属性 - 它将被初始化一次并在所有类实例之间共享。让 session 成为实例变量:

import requests

class MyClass(object):
    def __init__(self):
        self.s = requests.Session()

    def test(self):
        print self.s

关于python - 跨类的多个实例的一个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884200/

相关文章:

python - 使用 PyMC 的鲁棒非线性回归(2)

java - Tomcat session 意外过期

python - 请求模块编码提供了与 HTML 编码不同的编码

python - CookieConflictError - 尝试以编程方式登录 Google 财经时出现 APISID

python - 为什么 os.system ('set foo=bar' ) 不起作用?

python - 读取大文件而不重新分配内存

Python txt 文件字数统计程序

PHP SESSION 数据在本地主机上的 WAMPserver 2.0 页面加载之间丢失

ios - 如何在 Swift 3 的 UIWebview 中 session 过期?

python - 登录页面并获取cookie