isinstance - problème de reconnaissance de classe
Bonjour à tous,
Voici un exemple de code qui me déroute actuellement... :
Le fichier Foo.py :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| from bar import*
class Foo():
pass
if __name__ == "__main__":
A = Foo()
print("type de A : ", type(A))
print("A est une instance de Foo : ", isinstance(A, Foo))
B = bar(A, A)
print("type de B : ", type(B))
print("C est une instance de Foo : ", isinstance(B, Foo)) |
Le fichier bar.py
Code:
1 2 3 4
| from Foo import *
def bar(A, B):
return Foo() |
L'exécution de produit le résultat suivant :
Code:
1 2 3 4
| type de A : <class '__main__.Foo'>
A est une instance de Foo : True
type de B : <class 'Foo.Foo'>
B est une instance de Foo : False |
Au contraire de cela, je m'attendais à ce que les objets A et B soient des instances de la classe Foo. Mais non...
J'imagine que cela a été pensé et n'ai en fait pas un problème. Mais je ne comprends pas la logique derrière, ni comment modifier l'appel de insistance pour qu'il renvoient true dans les trois cas...
Derrière tout cela, mon objectif est de pouvoir écrire un code du type :
Code:
1 2 3 4 5 6 7 8
| from bar import*
from bar import*
class Foo():
def foo(self, bar):
if isinstance(bar, Foo):
pass |
sachant que mes objets pourront être crées aussi bien dans la fonction bar(a, b) du fichier bar.py que dans le if __name__ == '__main__': du fichier Foo.py
Merci d'avance à tous pour votre aide et vos explications.