2011-03-11 3 views

Répondre

11

Si x est une classe alors x.__module__ et x.__class__.__module__ vous donnera des choses différentes:

# (Python 3 sample; use 'class Example(object): pass' for Python 2) 
>>> class Example: pass 

>>> Example.__module__ 
'__main__' 
>>> Example.__class__.__module__ 
'builtins' 

Pour une instance qui ne définit pas __module__ directement l'attribut de la classe est utilisé à la place.

>>> Example().__module__ 
'__main__' 

Je pense que vous devez être clair quel module vous voulez vraiment connaître. Si c'est le module contenant la définition de la classe, alors il est préférable d'être explicite à ce sujet, donc j'utiliserais x.__class__.__module__. Les instances n'enregistrent généralement pas le module où elles ont été créées, donc x.__module__ peut être trompeur.

Questions connexes