You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python继承requests.Session类访问proxies触发AttributeError错误

错误产生原因
  • 你定义的requests_session函数返回值是RequestsSession类本身,而非该类的实例对象。你代码中把self.proxies定义在__init__方法内,属于实例属性,只有类完成实例化后才会绑定到实例对象上,直接通过类对象访问实例属性必然会触发属性不存在的报错。
  • 额外的错误点:你尝试访问extra_headers.__init__.proxies的写法本身不符合语法规则,__init__是类的构造方法,本身不会携带proxies属性,不需要对__init__方法做属性读取。
修复方案

有两种常见的修复思路,按需选择即可:

方案1:修改工厂函数直接返回实例(更推荐)

修改test.py里的requests_session函数,实例化类之后再返回,这样调用侧直接拿到可用的实例对象:

# test.py 修改后代码
import requests
 
def requests_session(proxies):
    class RequestsSession(requests.Session):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.trust_env = False
            self.proxies = proxies
    # 新增实例化步骤,返回实例而非类
    return RequestsSession()

此时proxy.py的调用代码无需修改,直接运行即可正常读取proxies属性。

方案2:调用侧先对返回的类做实例化

如果需要保留工厂函数返回类的逻辑,就在proxy.py调用时加括号完成实例化:

# proxy.py 修改后代码
from test import requests_session
 
proxies = {'http': 'http://proxy:8080', 'https': 'http://proxy:8080'}
# 加括号完成类的实例化,实例才会绑定proxies属性
extra_headers = requests_session(proxies)()
 
# 直接访问实例的proxies属性即可,不需要访问__init__
print(extra_headers.proxies)

内容的提问来源于stack exchange,提问作者Reactive_learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:24:05