py 的 第 27 天

今天首先回顾一下上周的面向对象

  1,继承,封装,多态

  2,成员

  3,修饰符

  4,反射

  5,模块   -hashlib  加盐md5  -logging  写日志

  6,异常处理

  7,接口,抽象类+抽象方法=》约束

今日内容

  1,面向对象多继承

  2,网路基础

  3,编写网络相关的程序

内容详细

1,面向对象多继承

  第一条原则先找左再找右

  class a(b,c):

  第二条原则是经典类和新式类

  经典类只有py2里有了py2.3里开始有的新式类

  py3只有新式类

  经典类和新式类的查找成员的顺序不一样

    经典类,一条道走到黑(深度优先)。

    新式类,c3算法实现(py2.3更新的c3算法)

  c3算法获取第一个表头 和  其他表位进行比较     不存在则拿走。   存在,则放弃,然后获取第二个表的表头再次和其他表的表身比较。

  c3算法object永远放在最后,如果object是正常类,按类处理,如果两个类都继承了这个类,就放下这个类往下走

  注意事项:

      super是遵循 mro的执行顺序的。

2 网络编程

  a。软件

      客户端:cs架构,client -》server       开发客户端

      浏览器:bs架构,browser-〉server  网页就能用

  b。如何实现相互通信

                    服务端

    import  socket      py自带的模块   网络通信用的

    创建socket对象

    server  =  socket.socket() 

    绑定ip和读端口

    server.bind(('自己的ip地址‘)我这台电脑的自设的端口,为了程序隔离   )    bind就是绑定的意思

    后边最多等5个

    server.listen(5)

    等客户端到来,一直等

    ret1 = server.accept()

    print(ret1)

    ret1是个元组里面只有两个元素  conn,addr       conn是客户端和服务端链接的对象,服务端以后要通过该对象进行收发数据。addr是客户端的地址信息

    data=conn.recv(1024)    recv是接收信息,通过对象去获取客户通过介质发给我的信息   1024表示服务端通过介质获取数据时一次性最多拿1024字节

    print(data)  打印看看客户端发来的是什么

    conn.send(b‘’)                 send是回信息,b是字节的意思,里面什么都行

    conn.close()  与客户端断开链接

    server.close()关闭服务端

            客户端

  import  socket

  bianliang  =  socket.socket

  客服向服务端发起连接请求      对面服务器如果没开也阻塞,知道连接成功后,才继续走

  bianliang.connect('服务端的端口',服务端设置的端口)                只要这边有人来连接,对面accept阻塞那立刻向下运行

  如果服务端先是输出,这边就显示输入,recv,反之send    这边输出输入有坑,输出的时候要写send。(b‘a’)b表示转一下字节,这个必须加,否则不是字节转不出去,对面收到的时候直接打印会把b和引号都打印出来,接收后打印也要转一下

unicode  现在用到21位了 一共32位

  

原文地址:https://www.cnblogs.com/Mrszhao/p/9588433.html