The self
Class methods have only one specific difference from ordinary functions: they must have an extra first name that has to be added to the beginning of the parameter list, but you do not give a value for this parameter when you call the method - Python will provide it. This particular variable refers to the object itself, and by convention, it is given the name self.
You must be wondering how Python gives the value for self and why you don't need to give a value for it. An example will make this clear. Say you have a class called MyClass and an instance of this class called myobject. When you call a method of this object as myobject.method(arg1, arg2), this is automatically converted by Python into MyClass.method(myobject, arg1, arg2), with myobject becoming the self.
This also means that if you have a method which takes no arguments, then you still have to have one argument, i.e., the self.