Antoon Pardon <[EMAIL PROTECTED]> wrote:

> If you really need it, you can do data hiding in python. It just
> requires a bit more work.
<snip>
> --- $ python
> Python 2.5.2 (r252:60911, Apr 17 2008, 13:15:05) 
> [GCC 4.2.3 (Debian 4.2.3-3)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> From Hide import Foo
>>>> var = Foo()
>>>> var.GetX()
> 0
>>>> var.SetX(5)
>>>> var.GetX()
> 5
>>>> var.x
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'Foo' object has no attribute 'x'
>>>> var.hidden.x
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'Foo' object has no attribute 'hidden'
>

That sort of hiding isn't any more secure than the 'hiding' you get in C++.
 
>>> var.GetX.func_closure[0].cell_contents.x
5

All you've done is force the user who wants to bypass it to use a longer 
expression, and if that's your criterion for 'hiding' then just use two 
leading underscores.

-- 
Duncan Booth http://kupuguy.blogspot.com
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to