1

プログラミングは初めてなので、ばかげた質問かもしれません。もしそうなら、お詫びします。

初期化時にかなり大量のデータの API に get 要求を行う Python でクラスを作成しています。

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

初期化後、私の理想的な世界では、初期化時にフェッチされた JSON に対してさまざまな操作を実行するための一連のメソッドがbarあります。baz

クラスをインスタンス化してメソッドを連続して呼び出すときは、次のようにします。

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

私の素朴な理解は、インスタンス化時にフェッチされた同じJSONに対して操作を実行しておりtest.bar()、独自の API 呼び出しを行っていないということです。明らかに、それぞれが独自の要求を行っている場合、全体がはるかに遅くなります。私の理解は正しいですか?それとも、JSON データの独自のコピーを取得していますか?test.baz()testtest.bar()test.baz()test.bar()test.baz()

4

2 に答える 2

1

いいえ、インスタンス化時に一度だけ発生します。sys.settraceを使用して監視し、確認してください。

于 2013-08-10T05:29:54.320 に答える
1

barおよびbaz関数の内容に完全に依存します。それがあなたがそれらを書く方法なら、彼ら呼び出すことができます。requests.get

__init__を呼び出すときに関数が呼び出されるかどうか疑問に思っている場合test.bar()、答えはノーです。そうではありません。 __init__オブジェクトをインスタンス化するときにのみ呼び出されFooます。

于 2013-08-10T05:30:02.797 に答える