zoukankan      html  css  js  c++  java
  • 面向对象魔术方法-__del__()方法

    1.python中对象赋值

    # 对象赋值
    # python中对象的赋值是地址的赋值
    n = 5
    n1 = n
    
    # 查看变量的内存地址
    print(id(n))
    print(id(n1))
    

    将n指向5的地址给了n1

    p = Person('Jack')
    p1 = p  # 将p的地址给了p1
    print(p)
    print(p1)
    

     p和p1指向同一个空间

    class Person:
        def __init__(self, name):
            self.name = name
    
    
    p = Person('Jack')
    p1 = p  # 将p的地址给了p1
    p2 = p
    print(p)
    print(p1)
    print(p2)
    
    print(p.name)
    print(p1.name)
    print(p2.name)
    
    print("====将属性值修改==========")
    p1.name = 'Tom'
    print(p1.name)
    print(p2.name)
    print(p.name)
    

    2.del方法

    只要你用del p2这样删除一个引用,就会默认调用__del__()方法

    __del__:

    (1)对象赋值

      p = Person()

      p1 = p   # 对象赋值

      说明:p和p1指向同一个地址

    (2)删除地址的引用

      del p1   # 删除了p1对这个地址的引用

    (3)查看对地址的引用个数

      import sys

      sys.getrefcount(p)   # 打印出关于地址的引用次数

    (4)当一块空间没有任何引用了,就会默认执行__del__

      ref = 0

    class Person:
        def __init__(self, name):
            self.name = name
    
        def __del__(self):
            print('--del--')
    
    
    p = Person('Jack')
    p1 = p  # 将p的地址给了p1
    p2 = p
    
    print("====将属性值修改==========")
    p1.name = 'Tom'
    print(p1.name)
    print(p2.name)
    print(p.name)
    
    del p2
    print("删除p2:", p.name)
    print(sys.getrefcount(p))
    
    del p1
    print("删除p1:", p.name)
    print(sys.getrefcount(p))
    
    # del p
    # print(sys.getrefcount(p))
    
    n = 5
    print(5)
    

    3.什么时机触发__del__()方法?

    python解释器回收所有在这一次执行过程开辟的空间,只要没有引用了,一回收就会调用__del__()方法

    4.什么时候触发垃圾回收机制?

    只要在python解释器执行完毕了,而没有任何引用这块内存空间,这是垃圾回收就会把这个内存空间回收

    python解释器在所有代码执行完成之后,会自动把所有引用断掉,触发垃圾回收机制,__del__()会被调用

    垃圾回收 --- 内存释放

  • 相关阅读:
    pythonGUI-wxpython
    [转]谈谈 Mifare Classic 破解
    python-optparse模块给脚本增加参数选项
    [笔记]python
    mac伪装工具macchanger
    mitmproxy
    yersinia的DHCP池耗尽断网攻击
    kalilinux工具中文在线
    MSF内网渗透 扫描模块
    渗透测试的一些总结
  • 原文地址:https://www.cnblogs.com/GumpYan/p/12369633.html
Copyright © 2011-2022 走看看