1) methods are just functions that happen defined in a class, and need to be callable either as bound methods with implicit self passing or as plain functions with explicit self passing The reason was an ssl certificate problem 2) making classmethod s and staticmethod s means you want to be able to rename and omit self respectively.
Premium Vector | 3d isometric flat vector conceptual illustration of
Many have proposed to make self a keyword in python, like this in c++ and java
This would eliminate the redundant use of explicit self from the formal parameter list in methods.
To close debugging questions where op omitted a self parameter for a method and got a typeerror, use typeerror Method () takes 1 positional argument but 2 were given instead In the body of the method and got a nameerror, consider how can. The w3c's webappsec working group is starting to look at the issue
In python, every normal method is forced to accept a parameter commonly named self This is how python methods interact with a class's state You are allowed to rename this parameter whatever you please But it will always have the same value:
Technically both self and this are used for the same thing
They are used to access the variable associated with the current instance Only difference is, you have to include self explicitly as first parameter to an instance method in python, whereas this is not the case with java Moreover, the name self can be anything. Say i want to implement a method that pretty prints the struct to stdout, should i take &self
I guess self also works As you can see, this is exactly a case for &self If you use self (or &mut self) the method will likely still compile, but it can only be used in more restricted situations.