Comment savoir quel module/package membres est défini? En définissant je veux dire:Tous les membres package/module définit?
somemodule.py
import os # <-- Not defined in this module
from os.path import sep # <-- Not defined in this module
I_AM_ATTRIBUTE = None # <-- Is defined in this module
class SomeClass(object): # <-- Is defined also...
pass
donc j'ai besoin d'une certaine sorte de fonction que lorsqu'elle est appelée produirait que I_AM_ATTRIBUTE
et SomeClass
.
Maintenant, j'ai essayé de faire en utilisant dir(somemodule)
, mais comment puis-je savoir lesquels sont définis dans somemodule
? La vérification par rapport à __module__
ne fonctionne pas, car elle n'est pas définie dans les modules et les attributs (tels que le package os
ou l'attribut sep
).
Apparemment, l'importation sauvage (from somemodule import *
) ne permet pas non plus de filtrer ceux-ci, est-ce même possible?
Le meilleur que je peux obtenir est:
import somemodule
for name in dir(somemodule):
try:
value = getattr(somemodule, name)
except:
pass
else:
if hasattr(value, "__module__"):
if value.__module__ != somemodule.__name__:
continue
if hasattr(value, "__name__"):
if not value.__name__.startswith(__name__):
continue
print "somemodule defines:", name
Prend os
, mais laisse sep
.
Quel est le problème avec la lecture de la source? Vous pouvez trivialement comprendre cela en lisant? Pourquoi ne pas simplement lire? –