Panos Laganakos wrote:
> i.e. we usually define private properties and provide public functions
> to access them, in the form of:
> get { ... } set { ... }
>
> Should we do the same in Python:
> Or there's no point in doing so?
>
> Some other techniques come to mind, but I think that Python tends to
> allow the programmer to access stuff he wants even though he shouldn't
> or in the form of a dict or list, rather than a method to do so.
There's no point. Private access can only be advisory anyway -- there are
ways around it in every language. Convention serves just as well, people
know that touching _foo is done at their own risk. It's not creating extra
hoops to jump through the few times you really do need to touch a private
var.
Others already mentioned how to transparently change attributes to
properties.
If you're worried about enforcing restrictions in your code base, get a lint
checker to flag any expression of the form name._foo where name isn't
'self'. Yes you can still access _foo other ways, but you'll never get
perfect enforcement anyway. Maybe the extra step will make you think
twice, if that's what you want (and it seems to be).
--
http://mail.python.org/mailman/listinfo/python-list