Marcus.CM a écrit :
Well after reading some of these posts on "sacred python cow" on the
"self" , i would generally feel that most programmers
who started with C++/Java would find it odd. And its true, i agree
completely there should not be a need to put "self" into every single
member function.
"member function" is C++. The way Python works is that you defines
functions (inside or outside a class, that doesn't matter) that, when
set as *class* attributes, are used as the *implementation* of the
corresponding method.
I think it's very important to use appropriate terms to understand
what's really going on here. As soon as you understand that what you
"def"ine is a *not* a method, but a *function* (eventually) used as the
*implementation* of a method, the necessary declaration of the target
object (instance or class) in the function's signature just makes sense
- the usual way to make some object accessible to the body of a
function is to pass this object as argument, isn't it ?
(snip)
What could be done instead is :-
1. python should hardcode the keyword "self". So whenever this keyword
is used, it would automatically implied that it is
referring to a class scope variable.
Usually, 'self' is used for *instance* attributes, you know. "class
attribute" are attributes of the class object itself (that is, shared by
all instances of the class).
This would be similar to how the
"this" keyword is used in C++.
2. Omit self from the parameter.
Now how would it work for functions defined outside a class statement,
but used as the implementation of a method ?
def toto(self):
# dummy exemple code
return self
class Tata(object):
pass
Tata.tutu = toto
class Titi(object):
tutu = toto
(snip)
--
http://mail.python.org/mailman/listinfo/python-list