面向对象的多继承与网络编程

一、面向对象多继承

  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()  #关闭连接
原文地址:https://www.cnblogs.com/qq849784670/p/9578990.html