如何让自定义Python函数支持调用后访问.text这类属性
实现方法
核心原理很简单:让你的函数返回一个自定义类的实例,你需要的.variable这类属性,直接在类里定义就可以。requests.get返回的也是官方封装的Response类实例,.text就是这个类自带的属性。
基础实现示例
# 第一步:定义自定义结果类,把需要对外暴露的属性都声明在类中 class CustomResponse: def __init__(self, content, code): # 你可以在这里添加任意需要的属性 self.text = content self.status_code = code self.content_length = len(content) # 第二步:编写你的业务函数,最终返回上面这个类的实例即可 def your_func(query_param): # 这里写你的业务逻辑,比如计算、请求、数据处理等 result_content = f"你传入的参数是:{query_param},这是处理后的结果" result_code = 200 # 返回自定义类的实例 return CustomResponse(result_content, result_code)
调用效果和requests的用法完全一致:
# 可以链式直接访问属性 print(your_func("test").text) # 也可以先存变量再调用 res = your_func("demo") print(res.status_code) print(res.content_length)
轻量场景简化实现
如果属性不多、不需要额外自定义方法,也可以直接用Python标准库的SimpleNamespace省去写类的步骤:
import types def your_func(query_param): content = f"处理后的结果,参数为{query_param}" return types.SimpleNamespace( text = content, status_code = 200, content_length = len(content) ) # 调用方式完全一致 print(your_func("test").text)
注意事项
- 不要直接返回字符串、数字这类基础类型,原生基础类型不支持新增自定义属性,强行赋值会报错
- 如果需要支持
foo().some_func()这类链式方法调用,直接在自定义类中定义对应方法即可
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

