- The overall introduction is here
- Introduction to Python
We have seen what class is in the previous sectioin. In the following chapters, we will see several conponents of class.
1. What is special method?
init(self) is a special method. A special method is typically wrapped by two _ on both sides. The special method is actually a common function, yet, will be call by the interpreter instead of you. For example, the init() method will be called by the interpreter when the class is instantiated.
For more examples, when you implement print() function to an object, the**str()** function will be called automatically and return a string which can be used to showed on the screen by print() funciton.
2. Frequently-used special methods.
When we define a class, we always need to use some special methods including
|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| init(self, ...) | The method will be called when a class is instantiated , and it is responsible for initializing some attributes. |
| str(self) | When you implement print(Object) and str(Object) , the method will be called and return a string that you define. |
| repr(self) | When you implement repr(Object) or the Object is in a list which is printed , the method will be called. Then return a string which you define. |
| add(self, ...) | This method is used for operator overload . We can just use**+** operator between numbers before. But if we define the add method, we can use**+operator between our class. |
| getitem(self) | When we use Object[0] or Object[0:2] or for i in Object, the method will be called. |
| len(self) | We can define the length of a class. Whenlen(Object)** is implemented, the method will be called and return an integral . You can define what is the length of your class. |
| call(self, ...) | We can use the class as a function relying on the method. We will specify it later. |3. init(self, ...)
We use this method to initialize the class member variables(attributes).
Supposed that we has a class named Car which contains 3 attributes , we can use the init method to initialize the instantiation.
pythonclass Car: def __init__(self, speed, weight, height): self.speed = speed self.weight = weight self.height = height # self.speed is the attribute and defferent from the speed arguments passed from outside.4. str and repr
The str is the abbrevition of string and typically used to transform your class into a string represtion . The repr is typically used to generate a string prompt of your class.
pythonclass Car: def __init__(self, speed, weight, height): self.speed = speed self.weight = weight self.height = height def __str__(self): return f"{self.speed} , {self.weight} , {self.height}" def __repr__(self): return f"Car({self.speed} , {self.weight} , {self.height})" # __str__ and __repr__ are very similar. # __str__ is mainly used by user and __repr__ is mainly used by developer.
5. getitem, if you don't know list, skip this part
You must have used
pythona = [1, 2, 3] print(a[1])You can exert a for loop on range(0, 3) because the range(0, 3) will return a list.
But you can't exert a for loop like that:
pythoncar1 = Car(10) print(car[0])Your class Car cannot be used like because you didn't define the getitem method in you class Car, so the for loop doesn't know where and how to get a list . You must define a getitem method which can return a list and then when the forloop is implemented the car1 will return a list to the for loop.
pythonclass Car: def __init__(self, speed): self.speed = speed def __getitem__(self): return [1,2,3]Then
pythoncar1 = Car(10) print(car1[0]) print(car1[1]) print(car1[2])
6. add , sub , mul
After you define the 3 method, you can exert + - and * operator on you object car
pythonclass Car: def __init__(self, speed): self.speed = speed def __add__(self, other): #-------------------------> other is another car object return Car(self.speed + other.speed) def __sub__(self, other): #-------------------------> other is another car object return Car(self.speed - other.speed) def __mul__(self, other): #-------------------------> other is another car object return Car(self.speed * other.speed) def __str__(self): #-----------------------------> remember? we can print the car througth method return "speed: {0}".format(self.speed)Then
pythoncar1 = Car(10) car2 = Car(20) print(car1 + car2) print(car1 - car2) print(car1 * car2)