Is vars() meant to include globals?

Opinderjit bhellao at my-deja.com
Fri Sep 15 23:59:39 EDT 2000


Where does the "classvar" variable go? It doesn't seem to be contained
in vars(), locals() or globals().

In article <8pso8m$686$1 at nnrp1.deja.com>,
  Hamish Lawson <hamish_lawson at yahoo.co.uk> wrote:
> My understanding was that all variables known to a given scope would
be
> listed in vars(), effectively the union of globals() and locals().
> However inside both SomeClass's __init__() and somefunc() in the
> program below, vars() gives just the local variables. But the global
> variable globalname is known in each case. Have I misunderstood about
> vars()?
>
> Hamish Lawson
>
> -------------------------------------------------------------
>
> globalname = "Bob"
>
> class SomeClass:
>
>     classvar = 3
>
>     def __init__(self, param):
>         localvar = 4
>         print 'globals():', globals()
>         print 'locals():', locals()
>         print 'vars():', vars()
>         print 'globalname:', globalname
>
> def somefunc(param):
>     localvar = 2
>     print 'globals():', globals()
>     print 'locals():', locals()
>     print 'vars():', vars()
>     print 'globalname:', globalname
>
> SomeClass("Joe")
> print
> somefunc("Sue")
>
> This gives:
>
> globals(): {'globalname': 'Bob', '__doc__': None, 'somefunc':
<function
> somefunc at 78f210>, 'SomeClass': <class __main__.SomeClass at
> 78f1f0>, '__name__': '__main__', '__builtins__': <module '__builtin__'
> (built-in)>}
> locals(): {'self': <__main__.SomeClass instance at
> 78f230>, 'param': 'Joe', 'localvar': 4}
> vars(): {'param': 'Joe', 'self': <__main__.SomeClass instance at
> 78f230>, 'localvar': 4}
> globalname: Bob
>
> globals(): {'globalname': 'Bob', '__doc__': None, 'somefunc':
<function
> somefunc at 78f210>, 'SomeClass': <class __main__.SomeClass at
> 78f1f0>, '__name__': '__main__', '__builtins__': <module '__builtin__'
> (built-in)>}
> locals(): {'param': 'Sue', 'localvar': 2}
> vars(): {'param': 'Sue', 'localvar': 2}
> globalname: Bob
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.
>


Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list