Creer des classes à la volé (metaclass type)
Bonjour,
je cherche à créer des classes qui héritent de 2 autres classes dynamiquement... mais je suis confronté au message suivant:
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Voici mon code:
J'ai une classe qu'on appellera : "vehicle" et qui hérite de :
Citation:
QtCore.QObject < MyObject < vehicle
Ensuite j'ai une classe qu'on appellera : "car" et qui hérite de vehicle
Citation:
QtCore.QObject < MyObject < vehicle < car
Puis j'ai des classes: vehicle_v11, vehicle_v12..
Citation:
QtCore.QObject < MyObject < vehicle < vehicle_v11
Citation:
QtCore.QObject < MyObject < vehicle < vehicle_v12
Et en gros moi je veux instancier dynamiquement des versions de "car" mais avec du double héritage.
Si je déclare ceci
Code:
1 2 3
|
class Car_v12(car.car, vehicle_v12.vehicle_v12):
pass |
Et que j'instancie ma classe ça fonctionne.
EN revanche si je veux m'éviter de creer des modules/classes creuses pour toutes les versions et que je veux faire ça dynamiquement
Code:
1 2
|
CL = type("Car_v12", ("car.car","vehicle_v12.vehicle_v12"), {}) |
et j'ai le message d'erreur
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Et même si je simplifie en faisant du monohéritage:
Code:
1 2
|
CL = type("Car_v23", ("vehicle",), {}) |
j'ai le message d'erreur
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
idem si je fais:
Code:
1 2
|
CL = type("Car_v23", ("car",), {}) |
Je serai vraiment intéressé si quelqu'un pouvait m'éclairer.
Merci par avance