将函数添加到没有类实例的模块

时间:2018-03-07 19:10:26

标签: python oop inheritance

我正在使用 requests 模块。我有许多程序想要对 requests.get(url)调用的结果进行复杂的检查。我想也许我可以在从 requests 的某些部分继承的类中添加这个新函数。但是 get 调用是在 api.py 文件中,该文件只包含静态函数定义,没有类声明。所以我无法弄清楚我的导入或子类定义应该是什么样的(“class Subclass(requests.api)”不起作用。)

我最终想到的是:

r = requests.get(url)
r.my_check()

是否有以类为导向的方法来完成此任务,或者我应该只在自己的单独模块中编写函数,并将其传递给 requests.get(url)调用的结果,完成吗?

2 个答案:

答案 0 :(得分:0)

不是说这是一个好主意,但最终我认为你只是想动态地向Response对象添加一个方法?

import requests
from requests import Response

def my_method(self):
    print(self.content)

Response.my_method = my_method
r = requests.get('https://www.google.com')

r.my_method()

<强>给出...

b'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><me

答案 1 :(得分:-1)

您可以定义自己的功能并在运行时附加到requests模块。

def my_get(self, *args, **kwargs):
    original_get = self.get(args, kwargs)
    # do what you want with the original_get, maybe change it according to your needs, then return the changed response.
    return changed_get

requests.my_get = my_get

# now you can use both of them
requests.get(url) # regular get method
requests.my_get(url) # your own get method