class car(object):
def read_spec_and_populate_db():
spec = read_from_file(spec.yaml)
populate_db(spec)
class awd(car):
super(awd, self).read_spec_and_populate_db()
def foo(self):
...
class fwd(car):
super(fwd, self).read_spec_and_populate_db()
def bar(self):
...
クラスawd
とfwd
は異なる時間にインスタンス化または片方のみのインスタンス化することができますすることができます。今、基本クラスのメソッドread_spec_and_populate_db()を1回だけ実行するように制限する方法はありますか?一度だけ実行されるように、基本クラスのメソッドを制限する方法
私はSOで検索して、hereを見つけました。他のオプションがあるかどうかを確認したい
編集:私はそれに反対です。私はフラグを使用する以外にもアイデアを探しています。私の現在の実装では、クラス内のフラグを使用しています。
としません:あなたは、いくつかの方法を「それが読み込まれた」を追跡する必要があります、そしてフラグが完全に透明な方法でありますそれを正確に伝える。魔法のためだけに魔法のことをしないでください。 – MatsLindh
クラスメソッドがより洗練されたIMOであることを除いて、これは問題ありません。はいの場合は、あなたの答えを更新し、私は私を削除します。私はすでにあなたをアップヴォートしました –
classmethodは継承では動作しません。最初に 'awk'のインスタンスを作成すると' awk.populated = True'が作成されます。そして、あなたが 'car'のインスタンスを作るとき、' car.populated'はまだfalseであり、スペックはもう一度読み込まれます。 –