python 面向对象 析构方法

实例化但从来没有调用他,就浪费了,就应该自动删除它
这个实例一直存在内存里

 python有个垃圾自动回收机制 , 每段时间会自动刷新整个内存,把内存垃圾东西删除
 
class role(): # 传参数



    def __init__(self,name,role,weapon,life_value=100,moneny=15000):
        # 构造函数
        # 实例化过程中做一些类的初始化工作
        # 成员属性
        self.name = name
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
        self.moneny = moneny


    def shot(self):  # 类的方法,功能(动态属性)
        print("shotting")


    def got_shot(self):
        print("on,%s got shoot..." % self.name)

    def buy_gun(self,gun_name):
        print("%s just bought %s" %(self.name,gun_name))
        self.weapon = gun_name

    '''
    析构函数: 在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 
    如关闭一些数据库连接,关闭打开的临时文件
    '''
    def __del__(self):
        print("del....")




b1 = role('mike','警察','AK47')

# 实例化但从来没有调用他,就浪费了,就应该自动删除它
# 这个实例一直存在内存里
# python有个垃圾自动回收机制 , 每段时间会自动刷新整个内存,把内存垃圾东西删除



b1.shot()

# 删除变量
del b1

import time
time.sleep(2)
b1.shot()

'''
shotting
del....

删除了变量了
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/ss/SSS/day6/析构方法.py", line 55, in <module>
    b1.shot()
NameError: name 'b1' is not defined
'''
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/mingerlcm/p/8423387.html