Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #41871 > unrolled thread

Re: At a loss on python scoping.

Started byDave Angel <davea@davea.name>
First post2013-03-26 06:07 -0400
Last post2013-03-26 06:07 -0400
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: At a loss on python scoping. Dave Angel <davea@davea.name> - 2013-03-26 06:07 -0400

#41871 — Re: At a loss on python scoping.

FromDave Angel <davea@davea.name>
Date2013-03-26 06:07 -0400
SubjectRe: At a loss on python scoping.
Message-ID<mailman.3728.1364292491.2939.python-list@python.org>
On 03/26/2013 02:17 AM, Shiyao Ma wrote:
> Hi,
> suppose I have a file like this:
> class A:
>      r = 5
>      def func(self, s):
>          self.s = s
> a = A()
> print(a.r)    # this should print 5, but where does py store the name of r
>
> a.func(3)
> print(a.s)    # this should print 3, also where does py store this name.
> what's the underlying difference between the above example?
>

I don't think this is a scoping question at all.  These references are 
fully qualified, so scoping doesn't enter in.

The class A has a dictionary containing the names of r and func.  These 
are class attributes.  Each instance has a dictionary which will contain 
the name s AFTER the A.func() is called.  Ideally such an attribute will 
be assigned in the __init__() method, in which case every instance will 
have s in its dictionary.

When you use a.qqq  the attribute qqq is searched for in the instance 
dictionary and, if not found, in the class dictionary.  If still not 
found, in the parent classes' dictionary(s).

You can use dir(A) and dir(a) to look at these dictionaries, but it 
shows you the combination of them, so it's not as clear.  In other 
words, dir(a) shows you both dictionaries, merged.  (Seems to me dir 
also sometimes censors some of the names, but that's a vague memory. 
It's never left out anything I cared about, so maybe it's things like 
single-underscore names, or maybe just a poor memory.)


-- 
DaveA

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web