On Jun 2, 6:40 am, Antoon Pardon <[EMAIL PROTECTED]> wrote: > On 2008-06-02, Carl Banks <[EMAIL PROTECTED]> wrote: > > > > > On Jun 2, 5:38 am, Antoon Pardon <[EMAIL PROTECTED]> wrote: > >> If you really need it, you can do data hiding in python. It just > >> requires a bit more work. > > >> ----------------------------- Hide.py --------------------------------- > >> class Rec(object): > >> def __init__(__, **kwargs): > >> for key,value in kwargs.items(): > >> setattr(__, key, value) > > >> def __getitem__(self, key): > >> return getattr(self, key) > > >> def __setitem__ (self, key, val): > >> setattr(self, key, val) > > >> class Foo(object): > > >> def __init__(self): > > >> hidden = Rec(x=0, y=0) > > >> def SetX(val): > >> hidden.x = val > > >> def SetY(val): > >> hidden.y = val > > >> def GetX(): > >> return hidden.x > > >> def GetY(): > >> return hidden.y > > >> self.SetX = SetX > >> self.SetY = SetY > >> self.GetX = GetX > >> self.GetY = GetY > > > Red Herring. > > > 1. This doesn't hide the variables; it just changes their spelling. > > 2. This also "hides" the variables from its own class. > > > In other words, it's a useless no-op. > > > In fact, I'd say this is even worse than useless. Creating accessor > > functions is a sort of blessing for external use. Knowing that there > > are accessor functions is likely to cause a user to show even less > > restraint. > > I think you completed missed the point.
I'm not sure I missed the point so much as I failed to read your mind. > This is just a proof of concept thing. In a real example there would > of course no Set en Get methods but just methods that in the course > of their execution would access or update the hidden attributes Fair enough, but I don't see anything in your example that suggests a way to discriminate between access from within the class and access from outside the class, which is the crucial aspect of data hiding. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list