On 2 April 2013 14:27, Fabian PyDEV <py...@hotmail.com> wrote: > Hi All, > > I have a question. > > Let says I have the following two classes: > > class Base(object): > __mylist__ = ["value1", "value2"] > > def somemethod(self): > pass > > > class Derived(Base): > __mylist__ = ["value3", "value4"] > > def anothermethod(self): > pass > > > > > what I would like to accomplish is that the class Derived has the member > __mylist__ extended or merged as ["value1", "value2", "value3", "value4"]. > > Is there anyway I could accomplish this? > > I was thinking on accomplishing this as follows: > > > class Derived(Base): > __mylist__ = Base.__mylist__ + ["value3", "value4"] > > def anothermethod(self): > pass > > > Is there a better way? Perhaps a decorator?
class Base(object): mybits = ["value1", "value2"] @classmethod def mylist(cls): return sum((getattr(p, 'mybits', []) for p in cls.mro()[::-1]), []) class Derived(Base): mybits = ["value3", "value4"] class FurtherDerived(Derived): mybits = ["value5"] >>> Derived.mylist() ['value1', 'value2', 'value3', 'value4'] >>> FurtherDerived.mylist() ['value1', 'value2', 'value3', 'value4', 'value5'] HTH -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list