次のようなコードがあります。
class Action(object):
...
class SpecificAction1(Action):
...
class SpecificAction2(Action):
...
それらはすべて同じファイルで指定されます。仕様の前に、次のような辞書を置きたいと思います。
ACTIONS = {
"SpecificAction1": SpecificAction1,
"SpecificAction2": SpecificAction2
}
アイデアは、他のモジュールから ACTIONS ディクショナリをインポートするだけで、この 1 つのディクショナリをアクションの 1 つの標準的な文字列表現にすることができるということです (アクションは、ネットワークや、識別子が必要な他の場所を介して送信されます)。
関数ポインターと同じ方法で、このような「クラスポインター」を実行することは可能ですか? そして、私のエディタは、辞書がクラス定義の前に宣言される前に名前が未定義であると不平を言います-これは本当ですか?
また、上記が可能であれば、クラスをインスタンス化するためにこれを行うことができますACTIONS['SpecificAction2']()
か?