[Tutor] OO newbie
Jacob S.
keridee at jayco.net
Fri Apr 8 03:18:44 CEST 2005
> 2-
> what are the differences between
> self.__DoubleUnderscore
> self._SimpleUnderscore
Double Underscores are way cooler!
Here's why.
Single underscores are just subtle clues to the user of the class that you
aren't specifically supposed to call that function of the class. IOW, its
used internally but not supposed to be used externally.
Double underscores are much neater.
For example -- in the python docs it should say that
int([x]) calls the __int__ method of x
float([x]) calls the __float__ method of x
And all of the other functions similar. str, repr, etc.
Yet even cooler---
a + b is the same as a.__add__(b)
a - b is the same as a.__sub__(b)
a * b is the same as a.__mul__(b)
a / b is the same as a.__div__(b) when from __future__ import division is
not imported
This means that you can control how the operands affect your object!
Even cooler...
Say the first argument is not your object
a + b is the same as b.__radd__(a) where b is your object
This allows you to affect how other objects treat your object.
a += b is the same as a.__iadd__(b)
It says in the docs that you should make the __i...__ series try to modify
the object, whereas the normal ones return a new object.
etcetera, etcetera, etcetera.
To find the full series in the docs --
http://docs.python.org/lib/module-operator.html
HTH,
Jacob
More information about the Tutor
mailing list