The need to put "self" in every method

Piet van Oostrum piet at cs.uu.nl
Wed Jun 1 17:29:24 EDT 2005


>>>>> aahz at pythoncraft.com (Aahz) (A) wrote:

>A> [posted & e-mailed]
>A> In article <wzu0kj9jbi.fsf at ordesa.lan>,
>A> Piet van Oostrum  <piet at cs.uu.nl> wrote:
>>> 
>>> There is.
>>> Inside a method there are 3 kinds of identifiers:
>>> - local ones e.g. parameters and local variables
>>> - global ones (actually module-level)
>>> - instance variables and methods
>>> 
>>> Because Python has no declarations there must be a different way to
>>> indicate in which category an identifier falls. For globals it is done with
>>> the 'global' keyword (which actually is a declaration), for instance
>>> variables the dot notation (object.name) is used and the rest is local.
>>> Therefore every instance variable or instance method must be used with the
>>> dot notation, including the ones that belong to the object `itself'. Python
>>> has chosen that you can use any identifier to indicate the instance, and
>>> then obviously you must name it somewhere. It could have chosen to use a
>>> fixed name, like 'this' in Java or C++. It could even have chosen to use a
>>> keyword 'local' to indicate local ones and let instance ones be the
>>> default. But if instance variable would be implicit, local ones should have
>>> been explicit.

>A> Any objection to swiping this for the FAQ?  (Probably with some minor
>A> edits.)

No.
The global/local stuff needs a bit more nuance (assignments in the method
being the criterium).
-- 
Piet van Oostrum <piet at cs.uu.nl>
URL: http://www.cs.uu.nl/~piet [PGP]
Private email: piet at vanoostrum.org



More information about the Python-list mailing list