現在のシナリオ:
コンストラクターですべて共通の引数を取る一連のクラスがありcontext
、すべてのクラスは共通のベースから継承します。
class base:
def common_method(self):
pass
class a(base):
def __init__(self,context, aa):
pass
class b(base):
def __init__(self, context, bb):
pass
# ...
class z(base):
def __init__(self, context, zz):
pass
メインでの使用法:
context = get_context_from_some_method()
A = a(context, 1)
B = b(context, 2)
C = c(context, 3)
D = d(context, 4)
.
.
.
Z = z(context, 26)
問題:
context
すべてのクラスに暗黙的に提供するトリッキーな方法はありますか?- 共通の基本クラスがありますが、すべてのクラスのコンテキストを設定できる明確な方法がわかりません。
- すべてのクラス インスタンスに共通のコンテキストを維持したいと考えられます。
- ただのランダムな考え - メタクラスは何とか役立つでしょうか?
ばかげているように思えることはわかっていますが、何らかの方法で冗長性を取り除き、何らかの方法でグローバル コンテキストを設定し、オブジェクトに集中できるようにしたいだけです。
何らかの方法を提案してください。
**質問への更新**
これはWebアプリケーションで使用されるため、基本クラスにコンテキストを設定できません。したがって、コンテキストが異なる多くのページがクラス構造を使用します。したがって、ベースにコンテキストを設定すると、同じベースを使用する Web ページの別のインスタンスによって設定されるコンテキストと競合します。Web アプリケーションでは、上記のすべてのクラスがすべてのページに共通のメモリ内にあるためです。