面向对象高级用法

__del__

  析构方法(析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)),当对象在内存中被释放时,自动触发执行。

  注:如果产生的对象仅仅只是python程序级别的(用户级),那么无需定义__del__,如果产生的对象的同时还会向操作系统发起系统调用,即一个对象有用户级与内核级两种资源,比如(打开一个文件,创建一个数据库链接),则必须在清除对象的同时回收系统资源,这就用到了__del__。

import time
class Foll:

    def __del__(self):
        print("清理尾巴工作开始")
        
f = Foll()
print("程序还在运行呢.....")
time.sleep(2)
print("程序运行结束了.....").

# 应用场景、例如打开了文件,在程序结束时关闭文件。
del

hasattr()

判断对象是否包含对应的属性和方法,返回True、False。

class A(object):

    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def abc(self):
        pass


a = A("a", "b", 'c')
print(hasattr(a, 'a'))  # True
print(hasattr(a, 'abc'))  # Tru
print(hasattr(a, 'as'))  # False
hasattr

getattr()

一般用来通过字符串查找对象对应的方法和属性。

getattr(object, name, [default])
# object -- 对象。
# name -- 字符串,对象属性。
# default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
getattr

更新中...............

原文地址:https://www.cnblogs.com/Dream-huang/p/10832795.html