小编Ant*_*ius的帖子

python propery:类似列表的对象

我正在尝试创建一个具有类似列表的属性的对象.这就是我的意思.

class Unit:

    def __init__(self):
        self.val = 0

class Bundle:

    def __init__(self, N=3):
        self.units = [ Unit() for i in range(N) ]

    def getvals(self):
        return [ unit.val for unit in self.units ]

    def setvals(self, vals):
        for i, val in enumerate(vals):
            self.units[i].val = val

    vals = property(getvals, setvals)
Run Code Online (Sandbox Code Playgroud)

现在,此对象的行为不符合预期.

>>> b = Bundle()
>>> b.setvals([1,2,3])
>>> print b.vals, b.getvals()
[1, 2, 3] [1, 2, 3]
>>> b.vals = [4,5,6]
>>> print b.vals, b.getvals()
[4, 5, 6] [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

所以语句"b.vals = …

python properties

4
推荐指数
1
解决办法
299
查看次数

标签 统计

properties ×1

python ×1