1 面向对象的多继承(经典类和新式类)
python2与python3的区别:
python2中:经典类
新式类(无__mro__)如果自己或自己的前辈只要有人继承object,那么此类就是新式类
python3:新式类
2 经典类与新式类的查找顺序不一样
经典类:一条道走到黑(深度优先)
新式类:C3算法实现(python2.3中更新的)

1 class D: 2 3 def bar(self): 4 print 'D.bar' 5 6 7 class C(D): 8 9 def bar(self): 10 print 'C.bar' 11 12 13 class B(D): 14 15 def bar(self): 16 print 'B.bar' 17 18 class A(B, C): 19 20 def bar(self): 21 print 'A.bar' 22 23 a = A() 24 25 执行bar方法时 26 # 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错 27 # 所以,查找顺序:A --> B --> D --> C 28 # 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了 29 a.bar()

1 class D(object): 2 3 def bar(self): 4 print 'D.bar' 5 6 7 class C(D): 8 9 def bar(self): 10 print 'C.bar' 11 12 13 class B(D): 14 15 def bar(self): 16 print 'B.bar' 17 18 19 class A(B, C): 20 21 def bar(self): 22 print 'A.bar' 23 24 a = A() 25 26 print(__mro__)
注意事项:super也是遵循__mro__执行顺序
二 网络编程
软件:
客户端:cs架构
服务器端:BS架构
三 实现相互通信
1 两个人直接连线 通过网线
2 教室之间的相互通信 通过交换机
3 与外地的亲戚通信 通过交换机和n个路由器
四 基于socket模块实现网络通信
1 为甚么网络通信发送的是字节?而不是字符串?
py3,send/recv 都是字节
py2,send/recv 都是字符串
2 服务器端:
accept ,阻塞:等待客户机来链接
recv,阻塞,等待客户端发来数据
客户端:
connect 阻塞:一直在连接,直到连接成功才往下运行
recv,阻塞,等待服务端发来数据

1 import socket 2 server=socket.socket() #创建服务端socket对象 3 server.bind(('192.168.23.18',80000)) #绑定自己的网址和端口 4 server.listen(5) #后面最多可以等5个人 5 conn,addr=server.accept()# 阻塞,只有有客户端连接上,Conn 是客户端和服务器之间连接的介质 阻塞,等待客户端连接然后进行通信 ,addr是客户端的地址信息 6 7 print("已经有人连接上了") 8 9 data=conn.recv(1024) #1024表示服务器端通过介质来获取数据的时候最多能一次性拿1024字节 10 print("已经有人发来消息了") 11 12 conn.send(b'stop')# 服务器端给客户端回复一个消息 13 14 conn.close()#与客户端断开连接 15 16 17 server.close()#关闭服务端的服务

1 import socket 2 server=socket.socket() #创建服务端socket对象 3 server.bind(('192.168.23.18',80000)) #绑定自己的网址和端口 4 server.listen(5) #后面最多可以等5个人 5 conn,addr=server.accept()# 阻塞,只有有客户端连接上,Conn 是客户端和服务器之间连接的介质 阻塞,等待客户端连接然后进行通信 ,addr是客户端的地址信息 6 7 print("已经有人连接上了") 8 9 data=conn.recv(1024) #1024表示服务器端通过介质来获取数据的时候最多能一次性拿1024字节 10 print("已经有人发来消息了") 11 12 conn.send(b'stop')# 服务器端给客户端回复一个消息 13 14 conn.close()#与客户端断开连接 15 16 17 server.close()#关闭服务端的服务
#### IOS七层模型,各层中的工作
(1)应用层 http https ssl smtp ftp
(2)传输层 tcp udp 端口信息 四层路由器 四层交换机
tcp
可靠的 面向连接的 全双工的 流式传输 效率低
三次握手和四次挥手
三次握手
把图背下来 syn ack
四次挥手
把图背下来 fin ack
黏包 : (自定义协议)先发送数据的长度,再发送数据
udp 效率高 不可靠 无连接 基于数据包的传输 能够传输的数据的长度有限
(3) 网络层 ipv4协议192.168.0.1 ipv6协议 ff2312:f5242:12:1:1:1 网关地址 子网掩码 路由器 三层交换机
(4) 数据链路层 mac地址 arp(通过ip地址找mac地址),rarp(通过mac地址找ip地址) 网卡 交换机
(5) 物理层