假装Python高手,把类这样改,真刺激!
共 2859字,需浏览 6分钟
·
2021-09-29 09:17
老王:小菜啊,你帮我写一个ssh登入脚本,跑十几条命令到服务器上,然后存一下日志。
小王:哇,这活简单啊,so easy 分分钟搞定啊!这不就是一个登入服务器的命令吗~~
小王思考了0.08秒,写下来猥代码:
2.封装成类
这个时候,小菜偷偷的瞄了一眼组长老王,常舒一口气,总于写完了。然后跑一下看看吧。
>
Dump the command history...
{'pwd': '/root'}
{'date': 'Mon Sep 20 16:09:19 CST 2021'}
Close ssh connection!
跑的没有问题啊,代码也很clean啊,异常都考虑了啊,打完收工!
3.啥事带上下文管理器的类
老王过来检查小菜干的活,大概看了1分钟,一脸严肃的说:
小菜啊,你知道with的用法吧,为啥家我们在读写文件的时候,都喜欢用with语句,因为方便啊。我们读写文件用with,然后关闭啥的我们都不用关,有with自动帮我处理。比如下面的情况:
with open('菜鸟学Python.txt','w' ,encoding='utf-8') as wf:
wf.write('我要好好学Python')
那么我们上面写的SSHClinet类是否也能像with一样灵活方便的,你好好想想吧。
这其实就是带上下文管理器的类,如果构建呢?其实很简单:
我们只需要再类里面增加2个魔法函数,一个是__enter__,一个是__exit__即可,就可以迅速把普通的类山鸡变凤凰。注意enter里面一定要返回类的对象self,否则无法调用run方法。
运行一下看看:
是不是非常干净,清爽,我们把主要的逻辑封装到run里面,然后ssh连接服务器和关闭服务器都封到enter和exit里面即可。这样代码也更pythonic。
4.进阶高手
经过上面的讲解,相信大家都明白了,于是小菜若有所思的开始动手修改了原来的代码。把普通的类变成了带上下文管理器的类。
整个的代码80%都跟原来的类似,我们只是增加了__enter和__exit__,其实就是原来的 connect和close 逻辑部分,但是这样一修改,外边在使用我们这个库的时候就会很简单。
>
Dump the command history...
{'pwd': '/root'}
{'date': 'Mon Sep 20 16:42:00 CST 2021'}
Close ssh connection!
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
量化: 定投基金到底能赚多少钱? | 我用Python对去年800只基金的数据分析
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
点阅读原文,领AI全套资料!