Difference between 'cls' and 'self' in Python classes? Difference between 'cls' and 'self' in Python classes? python python

Difference between 'cls' and 'self' in Python classes?


The distinction between "self" and "cls" is defined in PEP 8 . As Adrien said, this is not mandatory. It's a coding style. PEP 8 says:

Function and method arguments:

Always use self for the first argument to instance methods.

Always use cls for the first argument to class methods.


cls implies that method belongs to the class while self implies that the method is related to instance of the class,therefore member with cls is accessed by class name where as the one with self is accessed by instance of the class...it is the same concept as static member and non-static members in java if you are from java background.


It's used in case of a class method. Check this reference for further details.

EDIT: As clarified by Adrien, it's a convention. You can actually use anything but cls and self are used (PEP8).