Python で nosql データベース アプリケーションを設計しているときに、次のパターンに数回遭遇しました。
私が望むのは、オブジェクト階層内の一部のデータへの参照を動的に保存することです。これにより、データにアクセスし、階層内のどこにあるかを知ることができます。
たとえば、次のようなオブジェクト構造があるとします。
class A(object):
def __init__(self, val1, val2):
self.val1 = val1
self.val2 = val2
class B(object):
def __init__(self, a):
# a is an instance of A
self.a = a
class C(object):
def __init__(self, b):
# b is an instance of B
self.b = b
a = A(0,1)
b = B(a)
c = C(b)
ここで、オブジェクトの奥深くに存在するデータを (動的に) 参照したいと考えていc
ます。in内のof
を参照したいとしましょう。私がやっていることは、データを参照するための「ブレッドクラム」タプルを作成することです。次に、これらのブレッドクラムで参照したいクラスを基本クラス say から継承させます。このクラスは、ブレッドクラムを再帰的に解析し、それが参照するデータを返すために使用するメソッドを定義します。val1
A
B
c
('b', 'a', 'val1')
Breadcrumb
getattr
これはパターンですか?アンチパターン?これをもっと簡単に行う方法、またはプログラムを再設計する方法はありますか?