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

Python requests代码重构为OOP类后调用返回函数对象如何解决

问题修正与知识点讲解

错误原因

  • 你定义的response是类的实例方法,必须先实例化getvps类生成对象,才能调用该方法
  • 调用方法时必须加括号(),不加括号获取到的是方法本身的内存引用,不是方法执行后的返回值
  • 你的重构代码遗漏了requests库的导入语句,运行时会触发模块不存在报错

修正后可运行的完整代码

import requests

# 类名遵循Python大驼峰命名规范,也可保留你原有写法
class GetVps:
    # 类属性:所有实例共享的请求配置
    url = 'https://example.com/getlistitem'
    headers = {
        'User-Agent': 'Mozilla/5.0', 
        'Referer': 'http://banggia.tvs.vn/',
        'Content-Type': 'application/json;charset=utf-8'
    }
    
    def get_response(self):
        # 实例方法,self参数固定指向当前类的实例对象
        try:
            res = requests.get(self.url, headers=self.headers, timeout=30)
            res.raise_for_status() # 捕获4xx/5xx类的请求错误
            return res.json()
        except Exception as e:
            print(f"请求执行出错:{str(e)}")
            return None

if __name__ == '__main__':
    # 1. 实例化类,生成具体的请求客户端对象
    vps_client = GetVps()
    # 2. 调用实例方法,加()执行方法内部逻辑
    api_result = vps_client.get_response()
    print(api_result)

相关核心知识点

  • 类与实例的区别:类是抽象的功能模板,实例是根据模板生成的可调用的具体对象,带self参数的实例方法只能通过实例调用,不能直接用类名调用
  • 方法调用规则:Python中所有函数、方法调用都需要加括号(),不加括号返回的是函数/方法本身的对象引用,不会执行内部的逻辑代码
  • 编码规范优化:Python官方推荐类名使用大驼峰写法(每个单词首字母大写,无连接符),例如getvps改为GetVps,可以提升代码可读性;你原有headers里的content-type: text/json属于冗余配置,会被后面的Content-Type覆盖,可直接删除
  • 请求健壮性优化:新增raise_for_status()和异常捕获逻辑,遇到网络错误、接口返回4xx/5xx状态码时会主动打印错误原因,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:09:00