zoukankan      html  css  js  c++  java
  • (一)Python入门-6面向对象编程:04__del__方法(析构函数)和垃圾回收机制-__call__方法和可调用对象

    一:__del__方法(析构函数)和垃圾回收机制

      __del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象 占用的资源,例如:打开的文件资源、网络连接等。

      Python实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器 调用__del__方法。

      我们也可以通过del 语句删除对象,从而保证调用__del__方法。 系统会自动提供__del__方法,一般不需要自定义析构方法。

    【操作】

    #析构函数
    class Person:
        def __del__(self):
            print('销毁对象:{0}'.format(self))
    
    p1 = Person()
    p2 = Person()
    del p2    #删除对象,以保证能够调用__del__方法
    print('程序结束')

    运行结果:

      销毁对象:<__main__.Person object at 0x0000026103149320>
      程序结束
      销毁对象:<__main__.Person object at 0x000002610150A208>

    二:__call__方法和可调用对象

      定义了__call__方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用。

    【操作】

    #测试__call__方法,可调用对象
    class salaryAccount:
        '''工资计算类'''
        def __call__(self, salary):
            yearSalary = salary*12
            daySalary = salary//30
            hourSalary = daySalary//8
            return dict(monthSalary=salary,yearSalary=yearSalary,daySalary=daySalary,hourSalary=hourSalary)
    
    s = salaryAccount()
    print(s.__call__(20000))
    print(s(20000))     #可以向调用函数一样调用对象的__call__方法

    运行结果:

      {'monthSalary': 20000, 'yearSalary': 240000, 'daySalary': 666, 'hourSalary': 83}
      {'monthSalary': 20000, 'yearSalary': 240000, 'daySalary': 666, 'hourSalary': 83}

  • 相关阅读:
    GCD 使用说明
    iOS操作系统的层次结构
    Objective-C 类型转换
    UIView和Masonry实现动画效果
    iOS 常用手势
    SDUT 2610 Boring Counting(离散化+主席树区间内的区间求和)
    HDU 4417 Super Mario(主席树求区间内的区间查询+离散化)
    NBUT 1525 Cow Xor(01字典树+前缀思想)
    HDU 4825 Xor Sum(经典01字典树+贪心)
    HDU 1069 Monkey and Banana(二维偏序LIS的应用)
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10847276.html
Copyright © 2011-2022 走看看