我试图使用列表来引用一系列描述符,但没有成功.有一个_b由外部库()定义的对象列表(class A)我想通过描述符(class Descriptor)访问.在下面的示例中,b分配了对描述符的引用列表,但是当为列表的任何项分配值时,对该描述符的引用将被值覆盖,而不是将值传递给描述符.即使在阅读了几篇关于描述符的引用和文章之后,我显然也缺少描述符的基本行为.
class Descriptor(object):
def __init__(self, varname):
self.varname = varname
pass
def __get__(self, instance, owner):
print('get', self.varname)
#return getattr(getattr(instance, self.varname),"get")()
return instance.__dict__[self.varname].get()
def __set__(self, instance, value):
print('set', self.varname)
#getattr(getattr(instance, self.varname),"set")(value)
instance.__dict__[self.varname].set(value)
class A(object):
def __init__(self, value=None):
self.value = value
def get(self):
return self.value
def set(self, value):
self.value = value
class C(object):
print "root"
a = Descriptor('_a')
b = [Descriptor('_b[x]') for x in range(5)]
def __init__(self, val):
print "init"
self._a = A() …Run Code Online (Sandbox Code Playgroud)