您的位置:首页 > 编程语言 > Python开发

解读python中SocketServer源码

2017-10-22 16:14 579 查看

在看SocketServer源码之前,先看一个例子:

class Base(object):
def Testfunc(self):
print 'do Base Testfunc'

class Son(Base):
def __init__(self,name):
self.name = name
self.Testfunc()

def Testfunc(self):
print 'do Son Testfunc'

class Base2(object):
def Testfunc(self):
print 'do Base2 Testfunc'

class GrandSon(Base2,Son):
pass

#sonobj = Son('sonobj')
sonobj = GrandSon('sonobj')
View Code  

看上面的代码,我们猜测一下,执行之后,控制台会打印什么呢?先揭晓答案,会打印Base2方法中的内容,原因很简单:尽管这三个类中都有同样的Testfunc方法,但是,由于计算机在找方法的时候,遵循的顺序是:Base2,Son,Base,所以它会先找到Base2类,而这个类中刚好有它要找的方法,它也就拿去执行啦!

 

为了更好的来说明类之间的继承和对象调用方法之间的联系,我们需要画个简易的类图:

 

 

对照类图看源码

  根据上面的图,我们就拿到了threadingTCPServer的相关类,并且搞清楚了它们之间的继承关系和方法,接下来我们对照这张简易类图来看看代码执行的过程:

  初始化相关过程:

 

   执行serve_forever的相关代码:

 

就是这样,我们一路按照调用轨迹去寻找,每次看到一个调用都先对照上面的简易类图,看看有没有重名方法,如果有,就要找到最近的方法并查看里面的内容,以此类推:按照这种方法,就会感觉所有代码都在一个文件一样

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: