面向对象之魔法方法

什么是魔法方法?

Python类中的魔法方法(Magic Methods)是特殊的方法,以双下划线(__)开头和结尾的方法。

这些方法在对象的创建、运算符重载、属性访问等方面提供了特定的行为。

都是内置方法,一般方法命名不建议使用这种格式即双下划线开头和结尾的方法

__init__(self, ...):构造函数,用于初始化对象

特点:

1. 创建对象时,自动调用即不需要程序员显示调用

2. __init__(self) 中的self参数,不需要开发者传递,python解释器会⾃动把当前的对象引 ⽤传递过去。

 

__str__(self): 返回对象的字符串表示形式,通过print()或str()调用

__del__方法: 对象删除时自动调用该方法

示例

 1 '''
 2 1. 什么是魔法方法?
 3     Python类中的魔法方法(Magic Methods)是特殊的方法,以双下划线(__)开头和结尾的方法。
 4     这些方法在对象的创建、运算符重载、属性访问等方面提供了特定的行为。
 5     都是内置方法,一般方法命名不建议使用这种格式即双下划线开头和结尾的方法
 6 2. 常见的魔法方法
 7 
 8 '''
 9 
10 '''
11 1. __init__(self, ...):构造函数,用于初始化对象,注意无参、带参数(含参数不同)的处理方法就是使用默认值
12 '''
13 
14 
15 #  无参数
16 class Person:
17     # 为了 person = Person() 和 person = Person('Allen', 30)同时出现,使用了默认值,没有像java一样的重载
18     def __init__(self, name=None, age=None):
19         self.name = name
20         self.age = age
21 
22     def __str__(self):
23         return f'name={self.name},age={self.age}'
24 
25     def __del__(self):
26         print(
27             f'{self}对象已经被删除,id={id(self)}')  # 其实回来了2个对象。name=None,age=None对象已经被删除,id=1914706281616   name=Allen,age=30对象已经被删除,id=1914706290192
28 
29 
30 # 无参数
31 person = Person()  # 执行此句,会自动调__init__方法
32 
33 # 带参数的__init__() __init__
34 person = Person('Allen', 30)
35 
36 '''
37 2. __str__(self): 返回对象的字符串表示形式,通过print()或str()调用。
38 '''
39 print(person)
40 
41 '''
42 3. __del__方法: 对象删除时自动调用该方法
43 '''
44 print(id(person))  # 1914706290192
45 del person

 

posted @ 2023-07-12 22:35  Allen_Hao  阅读(23)  评论(0)    收藏  举报