Re: explicit self revisited
Peter Maas wrote:
This suggestion has been discussed in the past (I remember having the
same idea
myself when I first learned Python). But at the end I believe the
explicit 'self' is
a better solution, because there are cases where it is useful to have
it (see Steven
d'Aprano's post) and also I like the fact that I can spell it 'cls' in
classmethods and in
metaclasses. After a while one gets used to it and if you think a bit
it makes quite a
lot sense. Also, having the self explicit, makes Python object system
better (i.e.
it goes more in the direction of CLOS and less in the direction of
Java).
Michele Simionato
Peter Maas wrote:
The Python FAQ 1.4.5 gives 3 reasons for explicit self (condensed version):
>
1. Instance variables can be easily distinguished from local variables.
>
2. A method from a particular class can be called as
baseclass.metho dname(self, <argument list>).
>
3. No need for declarations to disambiguate assignments to local/instance
variables.
>
All these reasons are valid and retained by the following suggestion: let
self be represented by the dot <snip>
>
1. Instance variables can be easily distinguished from local variables.
>
2. A method from a particular class can be called as
baseclass.metho dname(self, <argument list>).
>
3. No need for declarations to disambiguate assignments to local/instance
variables.
>
All these reasons are valid and retained by the following suggestion: let
self be represented by the dot <snip>
same idea
myself when I first learned Python). But at the end I believe the
explicit 'self' is
a better solution, because there are cases where it is useful to have
it (see Steven
d'Aprano's post) and also I like the fact that I can spell it 'cls' in
classmethods and in
metaclasses. After a while one gets used to it and if you think a bit
it makes quite a
lot sense. Also, having the self explicit, makes Python object system
better (i.e.
it goes more in the direction of CLOS and less in the direction of
Java).
Michele Simionato
Comment