> On May 15, 2019, at 5:41 PM, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > > Irv Kalb <i...@furrypants.com> writes: > >> I just saw some code that confused me. The confusion has to do with >> class variables and instance variables. > > (Perhaps unrelated, but here's another confusion you may be suffering > from: There's no such thing as a “class variable” or “instance > variable”. In Python, a “variable” is always a *binding* between a name > and and object. The “variable” has no concept of different types.) > >> <snip> > > I'm not sure I understand the confusion; once the instance has an > attribute of that name, the same logic you outlined above applies when > attempting to resolve that attribute. When ‘self.x’ exists on the > instance, that's what will be used when resolving ‘self.x’. > > I hope that helps. >
Thanks for your comments. I am very aware of all the other issues that you explained. The only thing that threw me was that in a line like: self.x = self.x + 1 in a method, these two uses of self.x can refer to different variables. I actually teach Python, and this would be a very difficult thing to explain to students. I have never run across this issue because I would never use the same name as an instance attribute and a class attribute. (I also know that "attribute" is the "official" terms, but I've called them instance variables and class variables for so many years (working in other languages), that I use those terms without thinking.) Thanks, Irv -- https://mail.python.org/mailman/listinfo/python-list