Class methods have only one specific difference from ordinary functions - they have an extra variable 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. This particular variable refers to the object itself, and by convention, it is given the name self.
Although, you can give any name for this parameter, it is strongly recommended that you use the name self - any other name is definitely frowned upon. There are many advantages to using a standard name - any reader of your program will immediately recognize that it is the object variable i.e. the self and even specialized IDEs (Integrated Development Environments such as Boa Constructor) can help you if you use this particular name.
The self variable is equivalent to the this pointer in C++ and the this reference in Java.
You must be wondering why you don't need to give a value for this parameter just like you do for other parameters. The reason is that Python will automatically provide this value. For example, if you have a class called MyClass and an instance (object) of this class called MyObject, then when you call a method of this object as MyObject.method(arg1, arg2), this is automatically converted to MyClass.method(MyObject, arg1, arg2). This is what the special self is all about.