質問

したがって、静的クラスメンバーを使用しているので、クラスメソッドと同じクラスの静的メソッド間でデータを共有できます(クラスのインスタンスは1つしかありません)。私はこれを理解していますが、静的メンバーがいつ初期化されるのだろうか?輸入中ですか?クラスの最初の使用については?このクラスの静的メンバーを1つ以上のモジュールから呼び出すつもりなので(したがって、1つ以上のインポートステートメント)。静的メソッドにアクセスするすべてのモジュールは、同じ静的データメンバーを共有しますか?また、メインクライアントがクラスのインスタンスを削除し、それを再現した場合(完全に終了することも、物を再輸入することなく)、データメンバーは保存されますか?

役に立ちましたか?

解決

これらはクラスの定義時に初期化されます。これは、モジュールの一部としてクラスをインポートする場合にインポート時に発生します。これは、次のような「静的」クラスメンバー定義スタイルを想定しています。

class Foo:
    bar = 1

print Foo.bar # prints '1'

これは静的なクラスのメンバーであるため、クラスをインスタンス化する必要はないことに注意してください。

インポートステートメントは、何回、どこで実行されていても、モジュールのコンテンツを1回だけ実行します。

はい、静的メンバーは、それらにアクセスするコードによって共有されます。

はい、クラスの静的メンバーは、そのタイプがそのクラスであるオブジェクトを削除すると保存されます。

# Create static member
class Foo:
    bar = 1

# Create and destroy object of type Foo
foo = Foo()
del foo

# Check that static members survive
print Foo.bar # Still prints '1'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top