外部関数内にクラスを作成し、そのクラスを返す場合があります。クラスには指定された親クラスがあります。親クラスのクラスメソッドからそのクラス変数にアクセスできるようにしたいのですが、これらのメソッドはクラスの初期化時に呼び出されます。要約すると、他のハードコードされたクラス変数を初期化する前に使用できるように、クラス変数 (ハードコードされていない) を設定できる必要があります。
これを明確にするためのサンプルコードを次に示します。
class Parent(object):
class_var = None
@classmethod
def get_class_var_times_two(cls):
return cls.class_var * 2
def outer_function(class_var_value):
class Child(Parent):
other_var = Parent.get_class_var_times_two() # <-- at this point, somehow Child's class_var is set to class_var_value
これがPythonで可能かどうかはわかりません。おそらく、class_var_value を外部関数に渡す必要はありません。メタクラスを使用して、変数をクラス属性辞書に強制的に挿入しようとしましたが、other_var を初期化する前に設定されるように、Child に class_var を十分早く設定する方法がわかりませんでした。それが可能であれば、これはすべてうまくいくでしょう。どんな考えでも大歓迎です!
編集: other_var を遅延プロパティにすることも検討しましたが、それは私のユースケースのオプションではありません。