编程新手,所以可能是一个愚蠢的问题。如果是这样,请道歉。
我正在用 Python 编写一个类,它在初始化时向 API 发出获取相当大量数据的请求:
class Foo:
def __init__(self, params):
self.params = json.dumps(params)
self.r = requests.get(api, data=self.params).json()
初始化后,有很多方法 - bar
和 baz
- 在我的理想世界中,它们都意味着对 JSON 执行不同的操作在初始化时获取。
当我实例化该类并连续调用方法时,我会执行以下操作:
test = Foo()
test.bar()
test.baz()
我天真的理解是 test.bar()
和 test.baz()
正在对实例化时获取的相同 JSON 执行操作test
并且没有进行自己的 API 调用。显然,如果 test.bar()
和 test.baz()
各自发出自己的请求,整个过程会慢得多。我的理解正确吗?或者 test.bar()
和 test.baz()
正在获取它们自己的 JSON 数据副本?
最佳答案
这完全取决于bar
和baz
函数的内容。如果您是这样编写的,它们可以调用requests.get
。
如果您想知道在调用 test.bar()
时是否调用 __init__
函数,答案是否定的,事实并非如此。 __init__
仅在实例化 Foo
对象时调用。
关于python - 在类初始化时发出 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158918/