Why does python not have a mechanism for data hiding?
Antoon Pardon
apardon at forel.vub.ac.be
Mon Jun 2 06:40:07 EDT 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
> 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
More information about the Python-list
mailing list