[Tutor] Why super does not work !

Karim karim.liateni at free.fr
Mon Jan 17 22:47:48 CET 2011


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()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110117/4feb2e96/attachment-0001.html>


More information about the Tutor mailing list