The purpose of the `__init__()`

method is to resolve the input parameters into instance attributes (the unique data given to the object).

```
class Circle:
def __init__(self, radius):
self.radius = radius
circle_a = Circle(1) # instance a
circle_b = Circle(2) # instance b
print (circle_a.radius) # 1
print (circle_b.radius) # 2
```

Above, `circle_a`

and `circle_b`

are unique instances of the Circle class, and we can see they each have their own `radius`

attribute. `self`

in the above refers to the instance object in context when we poll the attributes or invoke the methods.

```
from math import pi as PI
class Circle:
def __init__(self, radius):
self.radius = radius
def circumference(self):
return 2 * PI * self.radius
circle_a = Circle(1)
circle_b = Circle(2)
print (circle_a.circumference()) # 6.283185307179586
print (circle_b.circumference()) # 12.566370614359172
```

Note that the last two lines invoke the method with ().

```
class Circle:
def __init__(self, radius):
self.radius = radius
def circumference(self):
return 2 * PI * self.radius
def area(self):
return PI * radius ** 2
circle_a = Circle(1)
circle_b = Circle(2)
print (circle_a.area()) # 3.141592653589793
print (circle_b.area()) # 12.566370614359172
```