小编jes*_*hep的帖子

Python:描述符列表

我试图使用列表来引用一系列描述符,但没有成功.有一个_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)

python list descriptor

5
推荐指数
1
解决办法
1218
查看次数

标签 统计

descriptor ×1

list ×1

python ×1