0
オブジェクトのインスタンスをファイルの先頭またはクラスのメソッド内にインスタンス化することをお勧めしますか?たとえば:ファイルの開始時またはメソッド内でのPythonオブジェクトのインスタンス化?
# start of file
foo = Foo()
class Bar(object):
def bar(self):
foo.some_method()
または
# start of file
class Bar(object):
def bar(self):
foo = Foo()
foo.some_method()
は、任意のパフォーマンスの違いにもありますか?これはFoo
にメソッドが呼び出されるたびに作成
class Bar(object):
def bar(self):
foo = Foo()
foo.some_method()
:
例に誤りがあり、2番目の例で 'def bar(self)'と 'self.foo = Foo()'、 'self.foo.some_method()'にする必要があります。それはあなたが意味することですか? – rth
訂正していただきありがとうございます。私はdef bar(self)を編集しました。インスタンス化されたオブジェクトを保存することを意味するものではありません。私が述べた2つのオプションよりも良い方法があるかどうかは自由に感じてください。 – jamesalone
ええ、これら2つの例は同じではありません!最初のものでは、誰かがFooクラスの別のメソッドを呼び出してその状態を変更できます。しかし、2番目の例では、fooオブジェクトはbar関数の終わりに毎回破棄され、新しい関数はbar関数の始めに作成されます。 'self.foo = Foo()'を '__init __(self)'に追加すると、これら2つの例は機能的に等しくなります。つまり、誰かが 'xoo.foo.some_method()'を呼んで状態 'Foo'オブジェクトを変更することもできます。if xxxはClass Barのオブジェクトです – rth