I think it might be related to your multiple inheritance, maybe super is calling the init of observable on the listbox portion or something? I hardly ever do multiple inheritance so I'm not sure. What happens if you swap observable to be the first one?
----------------------------- Sent from a mobile device. Apologies for brevity and top-posting. ----------------------------- On Jan 17, 2011, at 3:47 PM, Karim <karim.liat...@free.fr> wrote: > > > Hello, > > I implemented Observer DP on a listbox (Tkinter) as follows and I don't > understand why super() is not working and Observable.__init__(self) is > working, cf below: > > class ListObservable(Listbox, Observable): > """Creation de widget Listbox""" > def __init__(self): > super(ListObservable, self).__init__() > #Observable.__init__(self) > self._value = None > self.listeContenu = StringVar() > self.listeContenu.set(' '.join(sorted(data_base.keys()))) > self.liste = Listbox(listvariable=self.listeContenu, > selectmode='single') > self.liste.grid(row=0, column=1, sticky=N+S+W) > self.liste.bind('<Button-1>', self.onSelect) > > The error is: > Traceback (most recent call last): > File "./observerAppliGraphique.py", line 118, in <module> > app=App() > File "./observerAppliGraphique.py", line 37, in __init__ > self.sujet.attach(self.nom) > File "/home/karim/guiObserver/observable.py", line 11, in attach > self._observers.append(observer) > AttributeError: 'ListObservable' object has no attribute '_observers' > > And the Observable class is: > > class Observable(object): > """Sujet a observer""" > def __init__(self): > self._observers = [] > print('constructeur observable') > > def attach(self, observer): > """Attache un nouvel observateur""" > self._observers.append(observer) > > def detach(self, observer): > """Retire un nouvel observateur""" > self._observers.remove(observer) > > def notify(self): > """Avertit tous les observateurs que l'observable change d'etat""" > for observer in self._observers: > observer.update() > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor