一、面向对象多继承
1.先找左再找右
class A(object): pass class B(object): def f1(self): print("B") class C(A,B): pass obj = C() obj.f1() #B
2.经典类和新式类
py2:
经典类
新式类,如果自己或者自己的父类有人继承object,那么此类就是新式类
py3:
新式类
经典类和新式类的查找成员的顺序不一样。
经典类,一条道走到黑(深度优先)
新式类,C3算法实现(py2.3更新C3算法)
获取第一个表头和其他表尾进行比较,不存在则拿走,如果存在则放弃,然后获取第二个表的表头再次和其他表的表尾进行比较。
super是遵循__mro__执行顺序(__mro__可以查看继承顺序)
二、网络编程
1.软件
客户端:CS架构,client->server
浏览器:BS架构,browser->server
2.如何实现互相通信
两个电脑直接连接(网线)
教室互相通信(交换机)(内网)
交换机和路由器
总结:
1.相互通信本质发送:01010101
2.交换机作用
3.通过ipconfig查看自己的内网ip
4.公网ip,需要付费
3.基于socket模块实现网络通信
为什么网络通信发送的是字节而不是字符串
py3,send和recv都是字节
py2,send和recv都是字符串
服务器:
accept,阻塞:等待客户端来连接
recv,阻塞:等待客户端发来数据
客户端:
connect,阻塞:一直在连接,知道连接成功才往下运行其他代码
recv,阻塞:等待服务端发来数据
服务器:
import socket #引入socket模块 server = socket.socket() #创建一个socket的对象 server.bind(("192.168.13.185",8000)) #绑定服务器的ip和端口号 server.listen(5) #后边最多可以有5个人等待 conn,addr = server.accept() #conn是连接的对象,addr是客户端的地址 data = server.recv(1024) #客户端发送的消息,1024是最多接收1024字节 conn.send(b"buzhidao") #发送给客户端的消息 conn.close() #关闭与客户端之间的连接 server.close() #关闭服务器
客户端:
import socket #引入socket模块 kh = socket.socket() #创建一个socket的对象 kh.connect(("192.168.13.185",8000)) #服务器的ip和端口号 kh.send(b"123") #发送的内容 data = kh.recv(1024) #接收的内容 print(data) kh.close() #关闭连接