Google Groupes n'accepte plus les nouveaux posts ni abonnements Usenet. Les contenus de l'historique resteront visibles.

class version of func_globals?

261 vues
Accéder directement au premier message non lu

samwyse

non lue,
29 déc. 2009, 04:40:3529/12/2009
à
Is there any way to get the global namespace of the module in which a
class was defined? Answers for both Python 2.x and 3.x will be
cheerfully accepted.

Dave Angel

non lue,
29 déc. 2009, 06:18:3029/12/2009
à samwyse,pytho...@python.org
I don't know if it's the same in general, but consider the following
sequence in 2.6:


import sys

class MyClass(object):
pass

print "class--", dir(MyClass)
print "module--", dir(MyClass.__module__)
mod = sys.modules[MyClass.__module__]
print mod
print "globals--", dir(mod)

DaveA

samwyse

non lue,
29 déc. 2009, 07:54:5229/12/2009
à

Excellent! Exactly what I wanted, but wasn't clever enough to figure
out for myself. Thank you very much.

Jan Kaliszewski

non lue,
30 déc. 2009, 18:24:2230/12/2009
à pytho...@python.org
29-12-2009 samwyse <sam...@gmail.com> wrote:

But dir(mod) gives you only names, not objects (though, of course, you
can get them "manually" with getattr(mod, name)). To get from a class
the same you get from function using func_globals (i.e. dictionary with
names as keys and objects as values), use:

mod = sys.modules[MyClass.__module__] # (as above)
vars(mod) # or mod.__dict__, though vars(mod) seems to me more elegant

Cheers,
*j

--
Jan Kaliszewski (zuo) <z...@chopin.edu.pl>

0 nouveau message