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. 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 -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list