Why does python not have a mechanism for data hiding?
apardon at forel.vub.ac.be
Mon Jun 2 12:40:07 CEST 2008
On 2008-06-02, Carl Banks <pavlovevidence at gmail.com> wrote:
> On Jun 2, 5:38 am, Antoon Pardon <apar... at forel.vub.ac.be> 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
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
More information about the Python-list