解读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的相关代码:
就是这样,我们一路按照调用轨迹去寻找,每次看到一个调用都先对照上面的简易类图,看看有没有重名方法,如果有,就要找到最近的方法并查看里面的内容,以此类推:按照这种方法,就会感觉所有代码都在一个文件一样
相关文章推荐
- 解读python中SocketServer源码
- Python3之源码解读socketserver工作流程
- python 从SocketServer到 WSGIServer 源码分析、
- Python之socketserver源码分析
- Python标准库源码分析:SocketServer.py**********************8
- 36:Kafka源码解读SocketServer下的Acceptor、Processor、Handler
- Python SocketServer源码分析
- 第36课:Kafka源码解读SocketServer下的Acceptor、Processor、Handler
- 自动化运维Python系列之IO多路复用、SocketServer源码分析
- Python之美[从菜鸟到高手]--浅拷贝、深拷贝完全解读(copy源码分析)
- Java中ServerSocket源码
- python 学习笔记之socket编程——简单的聊天器雏形(server端)
- Python实现SocketServer(一)
- python网络编程:socketserver的基本使用
- Python3 网络套接字(socket / socketserver)
- Python::SocketServer
- python scoket、SocketServer简单实现文件上传下载
- python之SocketServer传文件实例
- apache kafka系列之源码分析走读-SocketServer分析
- iOS学习爬坑记录11:学习AsyncSocket时用python写的服务器server端简单代码