在 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里面的val1
of 。我正在做的是制作一个“面包屑”元组来引用数据。然后,我将使用这些面包屑引用的任何类都继承自基类 say ,该基类定义了递归解析面包屑并用于返回它所引用的数据的方法。A
B
c
('b', 'a', 'val1')
Breadcrumb
getattr
这是一种模式吗?反模式?有没有办法更简单地做到这一点,或者重新设计我的程序,这样我就不必这样做了?