1,面向对象多继承
经典类&新式类:
python3中只有新式类:默认继承object
python2:
经典类:
新式类:如果自己或自己的基类,只要有人继承了object,那么此类就是新式类
经典类和新式类查找成员顺序是不一样的
经典类:一条道走到黑,深度优先
新式类:c3算法
获取第一个表头和其他表尾比较
不存在则拿走
如果存在,则放弃,然后获取第二个表的表头再次和其他表的表尾进行比较
super是遵循__mro__执行顺序
网络编程:
2,网络基础
软件:
客户端:CS架构 client-->server
浏览器:BS架构 browser-->server
如何实现相互通信:
每台机器都有自己的mac地址
两个软件之间-->文件
两个人通信---->网线
教室相互通信-->交换机
使用IP地址: ipconfig/ifconfig
和其他地区的人-->交换机+路由器
总结:
1,相互通信本质发送的是 0101010101
2,交换机的作用 形成局域网,局域网收发消息,广播
3,通过ipconfig查看自己的内网IP
4,如果想有公网IP,需要掏钱
3,编写网络相关的程序
服务器端:
![]()
import socket
#创建一个服务端socket对象
server = socket.socket()
#绑定ip和端口
server.bind(('192.168.13.104',8000)) #第一个参数是自己的IP地址,第二个参数是端口号
#后边可以等5个人
server.listen(5) #最多排5个,后边的就不处理了
#等待客户端来连接,如果没人来就一直等着
#conn 是客户端和服务端连接的对象,服务端以后要通过该对象收发数据
#addr 是客户端的地址信息
conn,addr = server.accept() #阻塞,等客户端连接,只要有客户端进行连接,则获取客户端,然后开始进行下面的操作
print(conn,addr) #得到的是一个元组,元组里面永远有两个元素
#通过对象去获取
#1024指的是服务端通过对象获取数据时,最多一次性可以获取1024个字节
data = conn.recv(1024) #阻塞,等待客户端发来数据
print(data)
#服务端通过连接对象给客户端回复了一个消息
#发送的要是bytes类型
conn.send(b'stop')
#与客户端断开连接
conn.close()
#关闭服务端的服务
server.close()
server
客户端:
![]()
import socket
#创建一个客户端ocket对象
client = socket.socket()
#客户端向服务端发起连接请求(参数是服务端的ip,和端口号)
client.connect(('192.168.13.104',8000)) #阻塞,去连接,直到连接成功后才会继续往下走
#连接上服务端后,向服务端发送消息
client.send(b'hello')
#客户端等待服务端回复消息
data = client.recv(1024) #阻塞,等待服务端发来数据
print(data)
#关闭自己
client.close()
client
为什么网络通信发送的是字节,而不是字符串
python3 send/recv 发送的都是字节 字符串默认是Unicode类型
python2 send/recv 发送的是字符串