python - 在类初始化时发出 HTTP 请求

标签 python

编程新手,所以可能是一个愚蠢的问题。如果是这样,请道歉。

我正在用 Python 编写一个类,它在初始化时向 API 发出获取相当大量数据的请求:

class Foo:
    def __init__(self, params):
        self.params = json.dumps(params)
        self.r = requests.get(api, data=self.params).json()

初始化后,有很多方法 - barbaz - 在我的理想世界中,它们都意味着对 JSON 执行不同的操作在初始化时获取。

当我实例化该类并连续调用方法时,我会执行以下操作:

test = Foo()
test.bar()
test.baz()

我天真的理解是 test.bar()test.baz() 正在对实例化时获取的相同 JSON 执行操作test 并且没有进行自己的 API 调用。显然,如果 test.bar()test.baz() 各自发出自己的请求,整个过程会慢得多。我的理解正确吗?或者 test.bar()test.baz() 正在获取它们自己的 JSON 数据副本?

最佳答案

这完全取决于barbaz函数的内容。如果您是这样编写的,它们可以调用requests.get

如果您想知道在调用 test.bar() 时是否调用 __init__ 函数,答案是否定的,事实并非如此。 __init__ 仅在实例化 Foo 对象时调用。

关于python - 在类初始化时发出 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158918/

相关文章:

python - 使用 Numpy 的参数化数组

python - 如何测试 Django QuerySets 是否相等?

python - 没有名为 'selenium.webdriver' 的模块

python - 如何使用 joblib.dump 在 s3 上保存 sklearn 模型?

python - 如何向 UserDict 提供类型提示?

python - 如何将 QImage 插入到 PyQt4 中的 NxN 网格布局中?

python - 如何使用 Python 抓取 PDF;仅特定内容

python - 查找字符串中最常用的字符的最快方法是什么

python - 使用 QWebEngineView 显示大于 2MB 的内容?

不在工作目录中时出现 Python ModuleNotFoundError 错误; getcwd 找到模块