Ask HN: Python without dot notation
In his book Learn Python the Hard Way Zed Shaw writes:
You see that self in the parameters? You know
what that is? That’s right, it’s the “extra”
parameter that Python creates so you can type
a.some_function() and then it will translate
that to really be some_function(a).
Why use self? Your function has no idea what
you are calling any one “instance” of
TheThing or another, so you just use a generic
name self that way you can write your
function and it will always work.
http://learnpythonthehardway.org/static/LearnPythonTheHardWay.pdf (p. 116)This seems to imply that the dot notation is an alternative notation. Is it possible to use Python without the dot notation?
No, because the text really should be that a.some_function() is transformed to a.__class__.some_function(a). There's no way to get to the function except through dots or circumlocutions like 'getattr'.
There are some exceptions which make the above only an approximation. For example, if 'some_function' happens to be a function bound to the instance rather than the class. (def spam(): pass; instance.spam = spam; instance.spam() ) The result here is not the same as instance.__class__.spam(self) .