今天首先回顾一下上周的面向对象
1,继承,封装,多态
2,成员
3,修饰符
4,反射
5,模块 -hashlib 加盐md5 -logging 写日志
6,异常处理
7,接口,抽象类+抽象方法=》约束
今日内容
1,面向对象多继承
2,网路基础
3,编写网络相关的程序
内容详细
1,面向对象多继承
第一条原则先找左再找右
class a(b,c):
第二条原则是经典类和新式类
经典类只有py2里有了py2.3里开始有的新式类
py3只有新式类
经典类和新式类的查找成员的顺序不一样
经典类,一条道走到黑(深度优先)。
新式类,c3算法实现(py2.3更新的c3算法)
c3算法获取第一个表头 和 其他表位进行比较 不存在则拿走。 存在,则放弃,然后获取第二个表的表头再次和其他表的表身比较。
c3算法object永远放在最后,如果object是正常类,按类处理,如果两个类都继承了这个类,就放下这个类往下走
注意事项:
super是遵循 mro的执行顺序的。
2 网络编程
a。软件
客户端:cs架构,client -》server 开发客户端
浏览器:bs架构,browser-〉server 网页就能用
b。如何实现相互通信
服务端
import socket py自带的模块 网络通信用的
创建socket对象
server = socket.socket()
绑定ip和读端口
server.bind(('自己的ip地址‘)我这台电脑的自设的端口,为了程序隔离 ) bind就是绑定的意思
后边最多等5个
server.listen(5)
等客户端到来,一直等
ret1 = server.accept()
print(ret1)
ret1是个元组里面只有两个元素 conn,addr conn是客户端和服务端链接的对象,服务端以后要通过该对象进行收发数据。addr是客户端的地址信息
data=conn.recv(1024) recv是接收信息,通过对象去获取客户通过介质发给我的信息 1024表示服务端通过介质获取数据时一次性最多拿1024字节
print(data) 打印看看客户端发来的是什么
conn.send(b‘’) send是回信息,b是字节的意思,里面什么都行
conn.close() 与客户端断开链接
server.close()关闭服务端
客户端
import socket
bianliang = socket.socket
客服向服务端发起连接请求 对面服务器如果没开也阻塞,知道连接成功后,才继续走
bianliang.connect('服务端的端口',服务端设置的端口) 只要这边有人来连接,对面accept阻塞那立刻向下运行
如果服务端先是输出,这边就显示输入,recv,反之send 这边输出输入有坑,输出的时候要写send。(b‘a’)b表示转一下字节,这个必须加,否则不是字节转不出去,对面收到的时候直接打印会把b和引号都打印出来,接收后打印也要转一下
unicode 现在用到21位了 一共32位