J'essaie de faire en sorte que ma classe apparaisse comme un objet différent pour contourner la vérification paresseuse des types dans un paquet que j'utilise. Plus précisément, j'essaie de faire en sorte que mon objet apparaisse comme une instance d'un autre objet ( tuple
dans mon cas) alors qu'en réalité il ne s'agit même pas d'une dérivation de celle-ci.
Pour ce faire, je prévois d'écraser le fichier __isinstance__
qui, selon la docs devrait faire exactement ce que je désire. Cependant, il semble que je n'ai pas compris comment faire exactement, car mes tentatives ont été infructueuses.
Voici un SSCCE qui devrait faire isinstance
retourner False
dans tous les cas, mais ne le fait pas.
class FalseInstance(type):
def __instancecheck__(self, instance):
return False
class Foo(metaclass=FalseInstance):
pass
g = Foo()
isinstance(g, Foo)
> True
Qu'est-ce que je fais de mal ?