zoukankan      html  css  js  c++  java
  • Python--socketserve源码分析(一)

     

    class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass

    实现原理:

      s =socketserver.ThreadingTCPServer(参数1,参数2,......)

      根据ThreadingTCPServer的基类顺序,依次匹配各基类的构造函数参数

      若第一个没构造函数则向后匹配

      若有构造函数但参数不匹配则报错

      若有构造函数且参数匹配则调用基类构造函数,并停止匹配过程

    情况1:

    #coding:UTF-8
    
    class Base:def fun(self):
            print ("Base fun")
    
    class B:
        def __init__(self, a, b):
            print (a,b)
    
    class A(Base, B):
        pass        
    
    if __name__ == "__main__":
        a = A(1,2)

    >>>> 1,2

    情况2:

    #coding:UTF-8
    
    class Base:
        def __init__(self):
            self.ip = "192.168.3.8"
            self.port = 1122
            self.fun()
    
        def fun(self):
            print ("Base fun")
    
    class B:
        def __init__(self, a, b):
            print (a,b)
    
    class A(Base, B):
        pass        
    
    if __name__ == "__main__":
        a = A(1,2)

    >>>> Traceback (most recent call last):

    >>>> File "test.py", line 20, in <module>
    >>>> a = A(1,2)
    >>>> TypeError: __init__() takes 1 positional argument but 3 were given
    情况3:

    #coding:UTF-8
    
    class Base:
        def __init__(self, a, b):
            self.ip = "192.168.3.8"
            self.port = 1122
            self.fun()
    
        def fun(self):
            print ("Base fun")
    
    class B:
        def __init__(self, a, b):
            print (a,b)
    
    class A(Base, B):
        pass        
    
    if __name__ == "__main__":
        a = A(1,2)
        

    >>>> Base fun

      

      

  • 相关阅读:
    d3js 获取元素以及设置属性
    javascript 转义函数
    es6 对象浅拷贝的2种方法
    SwitchyOmega 代理设置
    table 设置边框
    Highcharts 配置选项详细说明
    windows环境下生成ssh keys
    vue 给组件绑定原生事件
    Vue 字面量语法 vs 动态语法
    Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/8310418.html
Copyright © 2011-2022 走看看