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

Reply via email to