编程新手,所以可能是一个愚蠢的问题。如果是这样,请道歉。
我正在用Python编写一个类,在初始化时会为API提供大量数据的get请求:
class Foo:
def __init__(self, params):
self.params = json.dumps(params)
self.r = requests.get(api, data=self.params).json()
初始化之后,有许多方法 - bar
和baz
- 在我的理想世界中,这些方法都意味着对初始化时获取的JSON执行不同的操作。 / p>
当我实例化类并连续调用方法时,我会这样做:
test = Foo()
test.bar()
test.baz()
我天真的理解是,test.bar()
和test.baz()
正在对test
实例化时获取的相同 JSON执行操作,不进行自己的API调用。显然,如果test.bar()
和test.baz()
各自提出自己的请求,整个过程会慢得多。我的理解是否正确?或者test.bar()
和test.baz()
是否获取了自己的JSON数据副本?
答案 0 :(得分:1)
不,它只在实例化时发生一次。使用sys.settrace观看并确定。
答案 1 :(得分:1)
完全取决于bar
和baz
函数的内容。他们可以致电requests.get
,如果你是这样写的话。
如果您想知道在致电__init__
时是否调用test.bar()
功能,答案是否定的,事实并非如此。只有在实例化__init__
对象时才会调用Foo
。