On Jan 7, 1:07 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Coming from a C++ / C# background, the lack of emphasis on private data > seems weird to me. I've often found wrapping private data useful to > prevent bugs and enforce error checking.. > > It appears to me (perhaps wrongly) that Python prefers to leave class > data public. What is the logic behind that choice?
Often it´s a question of efficiency. Function calls in Python are bloody slow. There is no "inline" directive, since it´s intepreted, not compiled. Eg. consider code like that: class MyWhatever: ... def getSomeAttr(self): return self._someAttr def getSomeOtherAttr(self): return self._someOtherAttr [x.getSomeAttr() for x in listOfMyWhatevers if x.getSomeOtherAttr() == 'whatever'] You´d get it running hundreds times faster doing it the "wrong" way: [x._someAttr for x in listOfMyWhatevers if x._someOtherAttr == 'whatever'] -- http://mail.python.org/mailman/listinfo/python-list