内置方法

一,内置方法

# 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...
# ============>

你可能感兴趣的:(内置方法)