On Sun, 01 Sep 2013 15:13:06 -0400, Roy Smith wrote: > In article <mailman.455.1378062400.19984.python-l...@python.org>, > Ethan Furman <et...@stoneleaf.us> wrote: > >> On 09/01/2013 03:09 AM, Fabrice Pombet wrote: >> > >> > So I guess that we are actually all agreeing on this one. >> >> No, we are not. >> >> "encapsulation" != "inaccessible except by getters/setters" > > Nothing is accessible in Python except via getters and setters. The > only difference between Python and, say, C++ in this regard is that the > Python compiler writes them for you most of the time and doesn't make > you put ()'s at the end of the name :-)
Very clever! Pedantic, and an unusual look at what's going on under the hood! I wanted to say it was *not quite correct*, because you can read or write directly to the instance dict: instance.__dict__['name'] = 42 If I understand Python's internals correctly, __dict__ is a slot, and so bypasses the usual getattr machinary. But even if so, __dict__['name'] uses the dictionary __get/setitem__ method, so it's still a getter/setter under the hood. In any case, even if you are *technically* correct that Python has getters and setters under the hood, that's not quite what the discussion here is about. But I'm sure you realise that :-) -- Steven -- http://mail.python.org/mailman/listinfo/python-list