面向对象类的进阶

抽象类

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运维开发之路《函数进阶》的更多相关文章

  1. python运维开发之路第一天

    一.python安装及环境变量配置 1.windows7安装python 1)下载地址:https://www.python.org/downloads/windows/ 如下图: 注意:下载,用代理 ...

  2. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  3. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  4. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  5. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  6. 重磅|0元学 Python运维开发,别再错过了

    51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类 ...

  7. Python运维开发基础01-语法基础

    标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...

  8. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  9. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

  10. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

随机推荐

  1. 更新pip遇到的问题及解决方法

    问题ython -m pip install --upgrade pip --user D:\APP\Anaconda3\python.exe: No module named pip解决方法 pyt ...

  2. [Linux]常用命令之【which/whereis/whatis】

    1 which shows the full path of (shell) commands. 显示(系统)命令所在目录 [root@test ~]# which ls alias ls='ls - ...

  3. Django笔记十七之group by 分组用法总结

    本文首发于微信公众号:Hunter后端 原文链接:Django笔记十七之group by 分组用法总结 这篇笔记介绍 Django 里面 model 的 group by 对应的一些操作. 用到的 M ...

  4. 【Note】(坑)一些组合恒等式的实际意义理解(和待填坑的组合数学知识)

    目录 排列组合 恒等式 (1) \(C_n^m=C_n^{n-m}\) (2) \(A_n^m+mA_n^{m-1}=A_{n+1}^m\) (3) \(C_n^{m-1}+C_n^{m}=C_{n+ ...

  5. handler+looper+messagequeue源码解析

    https://www.jianshu.com/p/b4d745c7ff7ahandler机制源码1.handler机制的作用在多线程的场景中,将子线程中需要更新UI的操作信息传递到UI主线程.多个线 ...

  6. 【Zookeeper】(二)安装与配置

    1 安装 安装JDK(参考项目部署) 将Zookeeper拷贝到Linux下 解压 tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz -C /opt/modul ...

  7. day02-Redis命令

    Redis命令 1.Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,value的类型多种多样,value常见的八种类型: Redis支持五种基本的数据 ...

  8. pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)

    pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...

  9. [Pytorch框架] 1.5 Neural Networks

    文章目录 Neural Networks 定义网络 损失函数 反向传播 更新权重 Neural Networks 使用torch.nn包来构建神经网络. 上一讲已经讲过了autograd,nn包依赖a ...

  10. Azure DevOps(三)Azure Pipeline 自动化将程序包上传到 Azure Bolb Storage

    一,引言 结合前几篇文章,我们了解到 Azure Pipeline 完美的解决了持续集成,自动编译.同时也兼顾了 Sonarqube 作为代码扫描工具.接下来另外一个问题出现了,Azure DevOp ...