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 ?

