Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do pythonistas call the current reference "self" and not "this"?

Tags:

python

People also ask

Why does Python use self instead of this?

The self is used to represent the instance of the class. With this keyword, you can access the attributes and methods of the class in python. It binds the attributes with the given arguments. The reason why we use self is that Python does not use the '@' syntax to refer to instance attributes.

Can we use this instead of self in Python?

You can use "this" instead of "self" as much as you want. However, that might confuse some syntax highlighters and code inspection tools. Using "self" is just a convention.

What does self mean in Python?

The self keyword is used to represent an instance (object) of the given class. In this case, the two Cat objects cat1 and cat2 have their own name and age attributes. If there was no self argument, the same class couldn't hold the information for both these objects.


Smalltalk-80, released by Xerox in 1980, used self. Objective-C (early 1980s) layers Smalltalk features over C, so it uses self too. Modula-3 (1988), Python (late 1980s), and Ruby (mid 1990s) also follow this tradition.

C++, also dating from the early 1980s, chose this instead of self. Since Java was designed to be familiar to C/C++ developers, it uses this too.

Smalltalk uses the metaphor of objects sending messages to each other, so "self" just indicates that the object is sending a message to itself.


Check the history of Python for user defined classes:

Instead, one simply defines a function whose first argument corresponds to the instance, which by convention is named "self." For example:

def spam(self,y):
    print self.x, y

This approach resembles something I had seen in Modula-3, which had already provided me with the syntax for import and exception handling.

It's a choice as good as any other. You might ask why C++, Java, and C# chose "this" just as easily.


Smalltalk, which predates Java of course.


With respect to python, there is nothing special about self. You can use this instead if you wanted:

Here's an example:

>>> class A(object):
...    def __init__(this):
...       this.x = 3
... 
>>> a = A()
>>> a.x
3

Although you could name it whatever you want, self is the convention for the first argument of a class function. Check out paragraph 5 of section 9.4 in the python documentation, which says:

Often, the first argument of a method is called self. This is nothing more than a convention: the name self has absolutely no special meaning to Python. Note, however, that by not following the convention your code may be less readable to other Python programmers, and it is also conceivable that a class browser program might be written that relies upon such a convention.

As for the convention, it started out in Smalltalk, but is also used in Object Pascal, Python, Ruby, and Objective-C. This answer has a great explanation.


Python follows Smalltalk's footsteps in the aspect - self is used in Smalltalk as well. I guess the real question should be 'why did Bjarne decide to use this in C++'...


The primary inspiration was Modula-3, which Guido was introduced to at DEC:

the Modula-3 final report was being written there at about the same time. What I learned there showed up in Python's exception handling, modules, and the fact that methods explicitly contain “self” in their parameter list.

-- Guido, Linux Journal Interviews Guido van Rossum