Re: class version of func_globals?

2009-12-30 Thread Jan Kaliszewski

29-12-2009 samwyse  wrote:


On Dec 29, 5:18 am, Dave Angel  wrote:

samwyse wrote:
> 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.

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


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


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) 
--
http://mail.python.org/mailman/listinfo/python-list


Re: class version of func_globals?

2009-12-29 Thread samwyse
On Dec 29, 5:18 am, Dave Angel  wrote:
> samwyse wrote:
> > 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.
>
> 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

Excellent!  Exactly what I wanted, but wasn't clever enough to figure
out for myself.  Thank you very much.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: class version of func_globals?

2009-12-29 Thread Dave Angel

samwyse wrote:

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.

  
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
--
http://mail.python.org/mailman/listinfo/python-list


class version of func_globals?

2009-12-29 Thread samwyse
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.
-- 
http://mail.python.org/mailman/listinfo/python-list