In a Python instance method, the first parameter refers to the instance on which the method is invoked. Its conventional name is `self`. You write it in the method definition, but do not pass it explicitly in an ordinary call such as `circle.area()`; Python supplies `circle` as `self`. section 15.3
An instance field and a local parameter
`class Circle: def __init__(self, radius=1): self.radius = radius def area(self): return self.radius * self.radius * 3.14159` `c = Circle(3)` passes the new instance to `__init__` as `self`. Inside that method, `radius` is a local parameter; `self.radius` is a field on the instance. Calling `c.area()` returns `28.27431`. `__init__` initializes the new instance; it does not construct it. section 15.3 section 15.1.1
A method can also be called through its class: `Circle.area(c)` supplies the instance explicitly and gives the same result as `c.area()`. This form is less convenient and rarely needed. Through `self`, a method can access instance fields, class members, and accessible inherited members; ordinary local variables are not instance fields. section 15.3 section 15.11
The rule differs for other kinds of methods: a static method receives no `self`, while a class method receives a reference to the class, conventionally named `cls`. section 15.15


