1、什么是魔术方法
在Python中,__xxx__()
的函数叫做魔法方法,指的是具有特殊功能的函数。
2、__init__()方法(初始化方法或构造方法)
思考:人的姓名、年龄等信息都是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢?
答:可以,使用__init__()
方法,其作用:实例化对象时,连带其中的参数,会一并传给__init__
函数自动并执行它。__init__()
函数的参数列表会在开头多出一项,它永远指代新建的那个实例对象,Python语法要求这个参数必须要有,名称为self。
# 1、定义一个类
class Person():
# 初始化实例对象属性
def __init__(self, name, age):
# 赋予name属性、age属性给实例化对象本身
# self.实例化对象属性 = 参数
self.name = name
self.age = age
# 2、实例化对象并传入初始化属性值
p1 = Person('孙悟空', 500)
# 3、调用p1对象自身属性name与age
print(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返回的是一个 字符串 类型的 数据 return f'汽车品牌:{self.brand},汽车型号:{self.model},汽车颜色:{self.color}' # 2、实例化对象c1 c1 = Car('奔驰', 'S600', '黑色') print(c1) # 在类的外部,使用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)
# 删除对象p1
del p1
__del__()
方法在使用过程中,比较简单,但是其在实际开发中,有何作用呢?
答:主要用于关闭文件操作、关闭数据库连接等等。
5、总结
提到魔术方法:
① 这个方法在什么情况下被触发
② 这个方法有什么实际的作用
__init__()
:初始化方法 或者称之为 “构造函数”,在对象初始化时执行,其主要作用就是在对象初始化时,对对象进行初始化操作(如赋予属性)
__str__()
:对象 字符串 方法,当我们在类的外部,使用print方法输出对象时被触发,其主要功能就是对 对象进行打印输出操作,要求方法必须使用return返回字符串格式的数据。
__del__()
:删除方法或者称之为“析构方法”,在对象被del删除时触发,其主要作用就是适用于关闭文件、关闭数据库连接等等。