J'utilise PyQt pour développer (rapidement normalement) une petite application, et je bloque sur un petit truc, je me demande si le comportement obtenu est normal ou si c'est un bug. Qu'en pensez-vous ?
class PyQtObject: def __init__(self): pass def __setattr__(self, name, value): self.__dict__[name] = value print self.__dict__ class MyPyQtObject (PyQtObject): def __init__(self): PyQtObject.__init__(self) self.attr = "value" i = MyPyQtObject() i.attr2 = "value2"
Bon, rien de compliqué, je surcharge juste __setattr__ pour ensuite pouvoir un peu mieux contrôler ce qui se passe lors d'une affectation.
Quand j'exécute le code, j'obtiens la sortie (attendue) suivante :
$ python Test.py {'attr': 'value'} {'attr2': 'value2', 'attr': 'value'}
Mais maintenant, si je fais dériver PyQtObject de QtCore.QObject comme ci-dessous :
class PyQtObject (QtCore.QObject): def __init__(self): QtCore.QObject.__init__(self) def __setattr__(self, name, value): self.__dict__[name] = value print self.__dict__
(sans changer le reste du code)
Voici la sortie que j'obtiens :
$ python Test.py {} {}
Pourquoi __dict__ reste-t-il tout le temps vide ?
Qu'est-ce que j'ai mal fait ?