3

約 12 ~ 14 個のメソッドを持つクラスから、何千ものオブジェクトを継続的に作成する必要があるプログラムがあります。それらが複雑なクラスであるという事実は、リストやディクショナリなどのより単純なオブジェクト、またはメソッドの少ない別のオブジェクトを作成することよりもパフォーマンスに影響を与えるでしょうか?

私の状況に関するいくつかの詳細: 私はコンテンツの「プリント」を継続的に作成および更新する一連の「テキスト」オブジェクトを持っています。印刷オブジェクトには多くのメソッドがありますが、属性はほんの一握りです。テキストオブジェクトは「再利用可能」であり、印刷の複数の独立したコピーを作成する必要があるため、印刷オブジェクトをテキストオブジェクト内に含めることはできません。そのため、更新時に印刷オブジェクトの属性を単に交換することはできません。

私はより良いですか、

  • アプリケーションが更新されると、すべてのメソッドを使用して新しい印刷オブジェクトを継続的に作成しますか?
  • クラスを解明し、印刷オブジェクトを単純な構造体に変換し、メソッドをオブジェクトを引数として受け取る独立した関数に変換しますか?

これは、オブジェクトメソッドとして呼び出されたはずの場所にすべての独立した関数をインポートする必要があるのに対し、それらに含まれるすべてのメソッドを使用して新しいオブジェクトを生成することに関連する大きなコストがあるかどうかに依存すると思います。

4

3 に答える 3

5

クラスの複雑さは問題ではありません。インスタンスを作成するときは、インスタンスとともにクラスへの参照のみを保存します。すべてのメソッドは、この 1 つの参照を介してアクセスされます。

于 2016-03-04T01:50:14.327 に答える
1

いいえ、違いはありません。

次のことを行うときは、次のことを考慮してください。

a = Foo()
a.bar()

メソッドの呼び出しbarは、実際には内部で次のように変換されます。

Foo.bar(a)

つまりbar、クラス定義の下では「静的」であり、関数のインスタンスは 1 つしか存在しません。このように見ると、いいえ、メソッドの数による大きな影響はないことが示唆されます。メソッドは、オブジェクトを作成するのではなく、Python プログラムを最初に実行したときにインスタンス化されます。

于 2016-03-04T01:50:42.710 に答える