Python >> Tutoriel Python >  >> Python

Étendre les classes intégrées SWIG

J'ai trouvé une solution tout à fait par hasard. J'expérimentais avec des métaclasses, pensant que je pouvais réussir à remplacer le setattr et getattr fonctions du type intégré dans la sous-classe.

Ce faisant, j'ai découvert que les fonctions intégrées avaient déjà une métaclasse (SwigPyObjectType), donc ma métaclasse devait en hériter.

Et c'est tout. Cela seul a résolu le problème. Je serais ravi si quelqu'un pouvait m'expliquer pourquoi :

SwigPyObjectType = type(SWIGBuiltinClass)

class Meta(SwigPyObjectType):
    pass

class Thing(SWIGBuiltinClass):
    __metaclass__ = Meta

Thing.myattr = 'anything' # Works fine this time