Reasoning behind 'self' parameter in classes?
elessar at nienna.org
Wed Jul 30 18:52:35 CEST 2008
Robert Dailey wrote:
> I want to point out first of all that I'm not as familiar with Python as
> I should be, and for that reason I question a lot of things because I'm
> mainly a C++ programmer and I'm used to certain conveniences. Having
> said that...
> I've always been curious (more so than annoyed) as to why one must
> explicitly specify a "self" parameter for member functions in a class in
> Python. This seems very "C" like to me, since to do object oriented
> programming in C you must devote one parameter to the object itself. In
> a higher order language like Python, I would not have expected (and thus
> am rather surprised) that this pattern would apply. Is there any
> particular reason why 'self' parameters must be specified explicitly? I
> am curious to understand the philosophy and design behind this.
> In Python 3 will there be any plans to eliminate this syntactic
> artifact? As I said, it's not terribly annoying to me but it seems like
> more of a hack than anything else. I would feel a bit better if I didn't
> have to see it. I don't mean to start any syntax wars or anything, so I
> hope everyone will keep an open mind and simply explain the design,
> rather than defend it. I'm interested in only facts, and not opinions.
> This is an example of a response I'm looking for:
> "The self parameter is required because the parser is a bit old and
> needs to know the exact object you're referencing"
> This is _not_ an example of what I'm looking for:
> "Specifying self is a great mysterious thing that we should never
> question. Do not question the language! The language is mighty! Don't
> bring C++ to Python!"
> I appreciate the community's time.
There was a massive thread "attack a sacred python cow" that brought up
a lot of reasons why this is the case. If you can ignore the flames,
you'll find some good info there. But it might not be wise to bring it
up again a week after it happened last time.
More information about the Python-list