Python运维开发之路《函数进阶》
面向对象类的进阶
抽象类
python 没有抽象类、接口的概念,所以要实现这种功能需要导入abc模块
py2:导入abc函数,_metaclass__ = abc.ABCMeta;在强制调用类下:@abc.abstractmethod
import abc class Alert(object):
'''报警基类'''
__metaclass__ = abc.ABCMeta @abc.abstractmethod
def send(self):
'''报警消息发送接口'''
pass class MailAlert(Alert):
pass m = MailAlert()
m.send()
py3:再强制调用类下添加raise NotImplementedError
import abc class Alert(object):
'''报警基类'''
__metaclass__ = abc.ABCMeta def send(self): #强制调用send,不调用报错:NotImplementedError
'''报警消息发送接口'''
raise NotImplementedError class MailAlert(Alert):
#pass
def send(self,msg):
print('>>>>>sending:',msg) m = MailAlert()
m.send('OK')
静态方法
通过@staticmethod 避免实例化开辟大量内存空间 既不能访问公有属性,也不能访问实例属性
类方法:
@classmethod 类方法,只能访问类的公有属性,不能访问实例属性
属性方法:
@property 作用是把一个方法变为一个静态属性
@property + 修改属性方法@talk.setter 删除@talk.delter
class Person(object):
''''''
name = 'LAIN'
def __init__(self,name):
self.Name = name @staticmethod #不能访问公有属性和实例属性
def eat(name,food):
print('%s is eating %s'%(name,food)) @classmethod #只能访问公有属性,不能实例属性
def walk(self):
print('%s is walking'%self.name) @property
def talk(self):
print('%s says' %self.name) p = Person('LAIN')
p.eat('LAIN','kfc')
p.walk()
p.talk
类的特殊方法
print(Foo.__doc__) 查看类的描述信息
__import__('time.account',fromlist=True) 动态导入, 以字符串模式导入模块
__call__():实例+()会触发call method
__dict__ 打印实例中所有属性值
__getitem__ 以字典的形式操作实例
__new__ 先于__init__执行,可以在new中自定义类的实例化过程
__str__ 返回实例的字符串形式
__metaclass__ 元类 动态创建类
type() 可以动态创建一个类 ===============================================
异常处理
一、基本异常处理结构
try:
代码块
except Exception as e:
代码块
二、复杂异常处理结构 try:
代码块
except:
代码块
else:
代码块
finally:
代码块 错误:try>except>finally
正确:try>else>finally 三、异常对象
try:
代码块
except Exception as obj:
python内部将错误信息封装到obj中
代码块 四、异常种类
exception 能捕获所有异常信息(万能)
try:
代码块
except Exception as obj:
代码块
execpt ValueError as obj:
代码块
execpt I/O as obj:
代码块
execpt IndexError as obj:
代码块
execpt (IndexError,IndexError) as obj:
print(obj) IndentationError,Syn... 无法抓到 五、主动触发异常 主动触发异常:raise Exception('邮件发送失败') 六、断言 assert 条件 #条件为true断言不执行,为false抛出异常 七、自定义异常 class HaiTaoError(Exception): ======================================================== 反射
getattr('容器','名称') 以字符串的形式去某个对象中,获取指定的属性
hasattr('容器','名称') 以字符串的形式判断某个对象中,是否含有指定的属性
setattr('容器','名称','值') 以字符串的形式去某个对象中,设置或添加指定属性
delattr('容器','名称') 以字符串的形式去某个对象中,删除指定属性 =========================================================
socket socket.SOCK_STREAM #for tcp
socket.SOCK_DGRAM #for udp
socket.SOCK_RAM #原始套接字
socket.SOCK_RDM #一种可靠的UDP形式
socket.SOCK_SEQACKET #废弃 =========================
server端
server = socket.socket(AF_INET,SOCK_STREAM) server.bind(('0.0.0.0',8000)) server.listen(5) conn,client_addr = server.accept() #conn,客户端过来的连接生成的对象 conn.send('') conn.recv('') server.close() client端
client = socket.socket(AF_INET,SOCK_STREAM)
client.connect()
====================================
for line in f:
conn.send(line)
f.write(d)
Python运维开发之路《函数进阶》的更多相关文章
- python运维开发之路第一天
一.python安装及环境变量配置 1.windows7安装python 1)下载地址:https://www.python.org/downloads/windows/ 如下图: 注意:下载,用代理 ...
- Python运维开发基础09-函数基础【转】
上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...
- Python运维开发基础08-文件基础【转】
一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础01-语法基础【转】
开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...
- 重磅|0元学 Python运维开发,别再错过了
51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类 ...
- Python运维开发基础01-语法基础
标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- Python运维开发基础06-语法基础【转】
上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...
随机推荐
- 技术分享:Proxy-Pool代理池搭建IP代理
技术分享:Proxy-Pool代理池搭建IP代理 前言本章内容仅供参考,不涉及实际使用,主要使用Python环境和Redis数据库进行环境搭建,工具网盘存储如下,有问题可以私聊我.网址:https:/ ...
- 使用kubeadm初始化IPV4/IPV6集群
使用kubeadm初始化IPV4/IPV6集群 图片 CentOS 配置YUM源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kube ...
- flask+gunicorn+nginx部署pytorch/python应用
1. 基于flask实现python服务Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 .Flask使用 ...
- [网络/Linux]处理安全报告/安全漏洞的一般流程与思路
对近期工作中所经历的4次处理第三方网络安全公司的安全报告及其安全漏洞的经验做一点小结. 1 流程 Stage1 阅读/整理/分类:安全漏洞报告的安全漏洞 (目的:快速了解漏洞规模和分布) Stage2 ...
- odoo 开发入门教程系列-约束(Constraints)
约束(Constraints) 上一章介绍了向模型中添加一些业务逻辑的能力.我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价 ...
- VS 输入快捷键propfull
大家都知道prop.propg输入快捷键. 当前我们需要生成一段包含属性和字段的代码时,可以propfull. propfull在安装了reshaper后,会被隐藏掉.没关系,直接敲propfull, ...
- Grafana系列-统一展示-6-Zabbix仪表板
系列文章 Grafana 系列文章 Notes: 关于 Grafana系列-统一展示-6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里 ...
- 猿人学内部js练习平台习题记录
猿人学内部js练习平台习题记录 根据课程更新 当前先完成第7题和第10题 第7题 骚操作 请求规律检测1 - post 1)通过fiddler抓包,看看请求头和请求体有什么骚操作的地方,如果没有反爬就 ...
- 2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库. 答案2023-03-12: 用github/moonfdd/ffmpeg-go库. 命令如 ...
- 2020-12-19:系统load过高,你怎么去查?
福哥答案2020-12-20:[答案来自此链接:](http://bbs.xiangxueketang.cn/question/800)1.top命令查看该机器的负载状况.2.cd /proc/pid ...