1

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

我正在用 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执行操作,并且没有进行自己的 API 调用。显然,如果每个人都提出自己的请求,整个事情会慢得多。我的理解正确吗?或者正在获取他们自己的JSON 数据副本?testtest.bar()test.baz()test.bar()test.baz()

4

2 回答 2

1

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

于 2013-08-10T05:29:54.320 回答
1

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

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

于 2013-08-10T05:30:02.797 回答