在类初始化时发出HTTP请求

时间:2013-08-10 05:24:26

标签: python

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

我正在用Python编写一个类,在初始化时会为API提供大量数据的get请求:

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

初始化之后,有许多方法 - barbaz - 在我的理想世界中,这些方法都意味着对初始化时获取的JSON执行不同的操作。 / p>

当我实例化类并连续调用方法时,我会这样做:

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

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

2 个答案:

答案 0 :(得分:1)

不,它只在实例化时发生一次。使用sys.settrace观看并确定。

答案 1 :(得分:1)

完全取决于barbaz函数的内容。他们可以致电requests.get,如果你是这样写的话。

如果您想知道在致电__init__时是否调用test.bar()功能,答案是否定的,事实并非如此。只有在实例化__init__对象时才会调用Foo