- 一、多继承c3算法
- 1、经典类与新式类
- 在python2之中,可以编写经典类和新式类,但是在python3之中编写的都是新式类
- 新式类,若自己和自己的前辈但凡有一个继承object,那么此类则为新式类
- 2、经典类和新式类的查找方法
- 经典类,深度优先的查找方式,即一条路走到黑,在先左后右的大方针之下,每一条查找到底在切换另一条线路
- 新式类,c3算法,使用Foo.__mro__可以查看Foo类的继承顺序,和__super__类似
- 3、c3算法
- 首先我们需要将每一条线路都写出来,大方针还是由左至右,ru:Foo:Foo+(B,C,D,F,G)+(I,G,D,G,W)
- 获取其中第一个括号的表头,和其他表的表中除开表头的类比较,没有相同的就放在继承里面,如果纯在就不变,使用下一个表的表头进行比较
class A(object): pass class B(A): pass class C(B): pass class D(object): pass class E(D,C): pass class F(object): pass class G(F): pass class H(C,G): pass class Foo(E,H): pass """ L(Foo + L(E) + L(H) ) L(E) = E,D,C,B,A,object L(H) = H,C,B,A,G,F,object Foo = (object) + (G,F,object) Foo,E,D,H,C,B,A,G,F,object """
- 1、经典类与新式类
- 二、网路编程
- 1、架构的分类:
- 1、C/S架构,有客户端的架构,client---》server
- 2、B/S架构,没有客户端,在网站上的架构,browser----->server
- 2、如何进行数据交互
- 1、内部局域网类:交换机会分配至多256个ip地址(windows查ip:在cmd中输入ipconfig;mac中查ip在终端中输入:ifconfig。
- 2、公网ip则需要花钱租借
- 3、相互通讯的本质还是互相发送高低电频
- 3、网路编程socket模块
- 1、服务端
- 首先创建socket模块. server=socket.socket( )
- 绑定一个ip地址.server.bind( ( ip地址,端口号) ),端口号是自己设置的,客户端需要提供一致的端口号才能进行通行,不同的进程调用的端口号不一样
- 设置最大队列人数:server.listen( 数量)
- 然后便可以等待客户来连接,ret = server.accpept( ),此刻程序会陷入一个阻塞,若是一直未有客户端成功连接便会一直等下去
- 若是有客户连接,程序便走下去,此刻我们打印这个ret,会得到一个元组,里面有两个元素,第一个是客户端与服务端连接的对象,通常我们会使用conn来接他,另一个是客户端的地址信息,通常我们会用addr来接收它
- conn叫全双工管道,可以简单的理解为一个传送介质,需要知道的事,这个介质是有客户端提供
- 接下来我们便可以进行收发信息,接受信息时也会有阻塞,data=conn.recv(里面是服务端通过介质获取信息时,一次性最大的获取量,一般设置为1024字节);发送消息为,conn.send(必须是字节型),而且记住,有发必须有收,在客户端和服务端收发必须相互对应,不然程序便会堵塞
- 最后记得关闭介质conn.close( )
- 关闭服务器需使用server.close( )
- 2、客户端
- 1、同样是先建立客户端client=socket.socket( )
- 2、client.connect( ( "服务器地址",端口号) ),向服务端发送链接请求,程序走到这同样会有阻塞,会一直尝试链接知道链接成功
- 3、client.send(字节类型),发送消息,data=client.recv( 1024),收消息
- 4、关闭客户端client.close( )
- 3、在py3中,收发信息默认的都是字节数,在py2中默认的收发的都是字符串,这是由于py3中字符串默认为unicode,故发送字节更加节约空间
- 1、服务端
- 1、架构的分类: