私はこの(例)コードを持っています。この問題に対する素晴らしいPythonesqueソリューションは何ですか?私の特定の状況init()
で遅延静的クラスメンバ初期
サードパーティおよび適応することができないとA
とは異なるファイルに呼ばれているが定義されています。
私はこの(例)コードを持っています。この問題に対する素晴らしいPythonesqueソリューションは何ですか?私の特定の状況init()
で遅延静的クラスメンバ初期
サードパーティおよび適応することができないとA
とは異なるファイルに呼ばれているが定義されています。
このようにしますか?
class A:
foo = None
def __init__(self):
if A.foo is None:
A.foo = bar()
print(A.foo)
あなたはA.__init__()
(例えば、明示的にそのコンストラクタを呼び出す前A
オブジェクトをunpickle化するとき)に呼び出されるかわからない場合にもA.__new__()
にif
文を移動することができます。
「A」が初期化されるまで初期化を遅らせる必要がある場合、 'foo'は実際には静的ではなくシングルトンです。 –
fooがクラス属性であることが本当に必要ですか?私はあなたがデザインのその部分を再加工する方がよいと思っています。 –
問題のクラスは 'Character'であり、静的属性は' Character.sprite'です。これは、すべての 'Character'インスタンスに共通するものであり、密接に関係しているので、静的メンバーの属性が最もよく見えました。私が使用するライブラリは、ライブラリが初期化される前にファイルからスプライトを読み込むことができません。 – orlp