When defining a method on a class in Python, it looks something like this:
def __init__(self, x, y):
self.x = x
self.y = y
I like to quote Peters' Zen of Python. "Explicit is better than implicit."
In Java and C++, '
this.' can be deduced, except when you have variable names that make it impossible to deduce. So you sometimes need it and sometimes don't.
Python elects to make things like this explicit rather than based on a rule.
Additionally, since nothing is implied or assumed, parts of the implementation are exposed.
self.__dict__ and other "internal" structures are available in an obvious way.