今天我们来介绍一些Python中的魔法方法。
在Python中,所有以 __ 双下划线包起来的⽅法,都统称为 Magic Method ,即魔法⽅法。魔法⽅法是系统提供的⽅法,⽤户需重新实现它,一般情况下⽆需⼿动调⽤,在合适时候⾃动会调⽤。
一、__init__()
__init__() ⽅法叫做对象的初始化⽅法,创建对象的时候,实例化对象,在创建⼀个对象时会被⾃动调⽤,不需要⼿动调⽤。
__init__() ⽅法的作⽤:添加属性
举个栗子:
class Pet:
def __init__(self,name,age):
self.name = name
self.age = age
说明:设置的⾃定义参数必须和创建对象时传递的参数位置和数量保持⼀致,同时可以设置参数,为默认属性提供不同的初始值。
二、__str__()
类实例化后,如果直接 print 打印对象,会看到创建出来的对象在内存中的地址。这样可能会暴露一些我们不想让程序使用者了解的信息。而当使⽤ print(对象变量名) 输出对象的时候,只要类中定义了 __str__() ⽅法,就会打印 __str__() ⽅法返回值。需要注意的是__str__() ⽅法的返回值必须是字符串类型
再举个栗子:
class Pet:
def __init__(self, name, age):
self.name = name
self.age = age
def func1(self):
print('lovepython')
# __str__返回格式化字符串
def __str__(self):
return f'{self.name} and {self.age} are hided'
cat = Pet('喵喵', 12)
print(cat)
运行结果为:
喵喵 and 12 are hided
三、__del__()
在对象的⽣命周期结束(对象销毁)时, __del__() ⽅法会⾃动被调⽤,做⼀些清理⼯作。
最后一个栗子:
class Thelast:
def __del__(self):
print('清理工作')
# 类外定义函数func
def func():
thelast = Thelast()
print('准备清理')
func()
运行结果为:
准备清理
清理工作
上述func()在调用时,先创建了实例化对象thelast,接着向控制台输出'准备清理',函数结束释放内存时,对象thelast被销毁,方法__del__被自动调用。