gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:46:33 25 4
gpt4 key购买 nike

我有来自请求的带有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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com