当前位置:首页>python>小白学python第68天之魔术方法

小白学python第68天之魔术方法

  • 2026-08-26 01:13:13
小白学python第68天之魔术方法

2.13

魔术方法

?

学前疑问

当你创建一个类时,是否希望能精细控制它的实例如何被创建、如何被显示、甚至如何参与数学运算?魔术方法正是让你获得这种强大控制力,并写出更优雅、更“Pythonic”的代码的关键。

1

魔术方法

(1)什么是魔术方法

在Python中,__xxx__()的函数叫做魔法方法,指的是具有特殊功能的函数。

(2)__init__()方法(初始化方法或构造方法)

思考:人的姓名、年龄等信息都是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢?

答:可以,使用__init__()方法,其作用:实例化对象时,连带其中的参数,会一并传给__init__()函数自动并执行它。__init__()函数的参数列表会在开头多出一项,它永远指代新建的那个实例对象,Python语法要求这个参数必须要有,名称为self。

# 1、定义一个类class Person():    # 初始化实例对象属性    def __init__(self, name1, age1):  # name1跟age1是参数        # 赋予name属性、age属性给实例化对象本身        # self.实例化对象属性 = 参数        self.name = name1        self.age = age1# 2、实例化对象并传入初始化属性值p1 = Person('孙悟空', 500)# 3、调用p1对象自身属性name与ageprint(p1.name)print(p1.age)

① __init__()方法,在创建一个对象是默认被调用,不需要手动调用

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

(3)__str__()方法

当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__()方法,那么就会打印从在这个方法中return的数据。

没有使用__str__()方法的类:

# 1、定义一个类class Car():    # 首先定义一个__init__()方法,用于初始化实例对象属性    def __init__(self, brand, model, color):        self.brand = brand        self.model = model        self.color = color    # 定义一个__str__()内置魔术方法,用于输出小汽车的相关信息    def __str__(self):        return f'汽车品牌:{self.brand},汽车型号:{self.model},汽车颜色:{self.color}'# 2、实例化对象c1c1 = Car('奔驰', 's600', '黑色')print(c1)

① __str__()这个魔术方法是在类的外部,使用print(对象)时,自动被调用的

② 在类的内部定义__str__()方法时,必须使用return返回一个字符串类型的数据

(4)__del__()方法(删除方法或析构方法)

当删除对象时,python解释器也会默认调用__del__()方法。

class Person():    # 构造函数__init__    def __init__(self, name, age):        self.name = name        self.age = age    # 析构方法__del__    def __del__(self):        print(f'{self}对象已经被删除')# 实例化对象p1 = Person('白骨精', 100)# 删除对象del p1

__del__()方法在使用过程中,比较简单,但是其在实际开发中,有何作用呢?

答:主要用于关闭文件操作、关闭数据库连接等等。

(5)总结

提到魔术方法:

① 这个方法在什么情况下被触发 

② 这个方法有什么实际的作用

__init__():初始化方法或者称之为“构造函数”,在对象初始化时执行,其主要作用就是在对象初始化时,对对象进行初始化操作(如赋予属性)

__str__():对象字符串方法,当我们在类的外部,使用print方法输出对象时被触发,其主要功能就是对对象进行打印输出操作,要求方法必须使用return返回字符串格式的数据。

__del__():删除方法或者称之为“析构方法”,在对象被del删除时触发,其主要作用就是适用于关闭文件、关闭数据库连接等等。

今日学习完毕,课后作业:

请编写一个 Student类,要求实现以下三个魔术方法的功能:

① __init__:在创建对象时初始化学生的 name(姓名)和 age(年龄)。

② __str__:返回字符串格式的学生信息,例如:"学生姓名:张三,年龄:20"。

③ __del__:在对象被销毁时打印提示信息,例如:"张三对象已被删除"。

程序要求:

(1)创建两个 Student对象,打印它们的信息。

(2)手动删除其中一个对象,观察 __del__方法的触发时机。

(3)程序结束时,自动触发另一个对象的 __del__方法。

最新文章

随机文章