跟牛牛老师学习python自动化的第九天

析构函数

1 class My:#
2     def __init__(self):
3         print('构造函数,类在实例化时,会自动执行它')
4         # self.client = pymongo.MongoClient(host='',port=27017)
5     def __del__(self):#析构函数,这个实例被销毁的时候自动执行
6         print('什么时候执行我呢')
7         # self.client.close()#自动关闭数据库和文件

析构函数在实例化后执行完所有程序会执行,但是可以选择在什么时候让它结束

m=My()

del m

私有的类和变量

1 class My:#
2  
3    def __say(self):#安全性更高
4         #函数名或变量名前面加__,这个函数或变量就是私有的,只能在类里面用,类外无法使用
5         print('3')
6     def cry(self):#带self实例方法
7         self.__say()
8         print('4')

私有防止多人写一个项目重复给一个变量赋值,导致原来的被覆盖

装饰器
装饰器,不改变原来的函数,给函数添加新功能,可以自己写,也有写好的
1 def timer(func):
2     def war(*args,**kwargs):
3         start= time.time()
4         res = func(*args,**kwargs)
5         end_time = time.time()
6         print('运行时间是%s'%(end_time-start))
7         return res
8     return war

用装饰器下载下图的图片

1 import requests
2 @timer#用计时的装饰器
3 def down_img():#下载网页上的图片到本地
4     res = requests.get('http://www.nnzhp.cn:80/wp-content/uploads/2018/07/60f2add20f0659e27d26435f28b8472e.png')
5     open('a.png','wb').write(res.content)
6 down_img()

 运行结果:

也可以传参有返回值

实例方法:

1  def cry(self):#带self是实例方法
2         self.__say()
3         print('4')

先实例化:m=My()  再调用:m.cry()

类方法:

1 @classmethod#装饰器,不改变原来的函数,给函数添加新功能
2     def eat(cls):#class 类方法
3         print(cls.country)
4         print('吃饭')

直接用类名调用:My.eat()

静态方法:

1     @staticmethod
2     def run():
3         pass

直接用类名调用:My.run()

属性方法:

 @property #属性方法
    def red_pag(self):
        return 100 #调用时直接当做一个变量用,获取返回值
先实例化:m=My()
直接打印返回值:print(m.red_pag)


猜你喜欢

转载自www.cnblogs.com/Mezhou/p/9392424.html