Special method in class

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 Object0 or Object0:2 or for i in Object, the method will be called. |
| len(self) | We can define the length of a class. When
len(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.

python 复制代码
class 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.

python 复制代码
class 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

python 复制代码
a = [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:

python 复制代码
car1 = 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.

python 复制代码
class Car:
    def __init__(self, speed):
        self.speed = speed

    def __getitem__(self):
        return [1,2,3]

Then

python 复制代码
car1 = 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

python 复制代码
class 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

python 复制代码
car1 = Car(10)
car2 = Car(20)

print(car1 + car2)
print(car1 - car2)
print(car1 * car2)
相关推荐
Scott9999HH2 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔2 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社3 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海3 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖4 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区7 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大7 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai7 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json