getter and setter and list appends

dasacc22 dasacc22 at gmail.com
Mon Apr 20 18:57:00 CEST 2009


Hi,

I seem to be having a problem with a list being share across multiple
instantiations of it and dont quite understand why this is happening.

My class looks like this,

class Widget(object):
    _parent = None
    _children = []

    def __init__(self, parent=None):
        self.parent = parent

    @property
    def children(self):
        return self._children

    @property
    def parent(self):
        return self._parent

    @parent.setter
    def parent(self, obj):
        if obj:
            obj._children.append(self)
            self._parent = obj


now if i make instances and attach children like so

a = Widget()
b = Widget(a)
c = Widget(a)
d = Widget(c)

Basically all the objects end up sharing the _children list from `a`
instead of forming something like a tree. Any advice would be greatly
appreciated.

Thanks,
Daniel



More information about the Python-list mailing list