Why is that ? to me it makes sense when I see self.__m_var that I'm dealing with a member variable taht derived classes will not see/access.
Philippe Steven Bethard wrote: > Panos Laganakos wrote: >> 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: >> >> self.__privateAttr = 'some val' >> >> def getPrivateAttr(self): >> return self.__privateAttr >> >> Or there's no point in doing so? > > There is no point in doing so. You should use plain attributes whenever > possible (that is, whenever you're really just doing a get or a set, > with no computation). The only reason to use getters and setters is so > that you can change the implementation later if you need to. But python > allows you to do this with properties: > > >>> class C(object): > ... def __init__(self, x): > ... self.x = x > ... > >>> C(42).x > 42 > >>> class C(object): > ... def _get_x(self): > ... return self._x * 2 > ... def _set_x(self, value): > ... self._x = value / 2 > ... x = property(_get_x, _set_x) > ... def __init__(self, x): > ... self.x = x > ... > >>> C(42).x > 42 > > Which should not be interpreted as saying you should start writing a > bunch of properties now. ;) Instead, only introduce a property when you > find that something must remain an attribute (presumably for backwards > compatibility reasons) but for whatever reason it now needs some > additional computation. > > STeVe -- http://mail.python.org/mailman/listinfo/python-list