一,内置方法
# 1、什么是内置方法?
# 定义在类内部,以__开头并以__结果的方法
# 特点:会在某种情况下自动触发执行
# 2、为何要用内置方法?
# 为了定制化我们的类or对象
# 3、如何使用内置方法
# __str__:在打印对象时会自动触发,然后将返回值(必须是字符串类型)当做本次打印的结果输出
## 示例1:
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
print('运行了...')
return "<%s:%s>" %(self.name,self.age)
obj = People('辣白菜同学', 18)
print(obj.__str__()) 等同于 print(obj)
print(obj.__str__()) # 调用的时候加上return返回值,只能是字符串
# <辣白菜同学:18>
# print(obj)
# <辣白菜同学:18>
# 示例2
obj1=int(10)
print(obj1) # 10
print(obj1.__str__()) # 10
__del__:在清理对象时触发,会先执行该方法
# 示例1)
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def __del__(self):
print('run...')
obj = People('辣白菜同学', 18)
print('============>') # 注意这个时候输出的结果============>在前,run...在后,即__del__(self)后执行
# ============>
# run...
# 示例2)
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def __del__(self):
print('run...')
obj = People('辣白菜同学', 18)
del obj # obj.__del__() # 增加了 del obj
print('============>') # 注意这个时候输出的结果run...在前,============>在后,即__del__(self)先执行
# run...
# ============>
# PS: 在执行del obj后,执行print(obj)便会报错
#总结:示例2中执行了del obj,触发了__del__,所以会先执行__del__下的print('run...')
# 示例3:适用环境,比如打开某个文件执行,程序结束关闭文件节约系统资源
class People:
def __init__(self, name, age):
self.name = name
self.age = age
self.x = open('a.txt',mode='w')
# self.x = 占据的是操作系统资源
def __del__(self):
print('run...')
# 发起系统调用,告诉操作系统回收相关的系统资源
self.x.close()
obj = People('辣白菜同学', 18)
del obj # obj.__del__()
print('============>')
# run...
# ============>