最近在阅读ncclient源码,目的是从中学习一些python的基础知识,并解决工作中可能出现的问题。
今天总结的知识点就是Thread继承,以及执行start之后的动作。
'''
测试Threading继承
'''
from threading import Thread
class Sessionn(Thread):
def run(self):
raise NotImplementedError
def _post_connect(self):
print('start...')
self.start()
print('started')
class SSHSession(Sessionn):
def run(self):
print('hello world')
class Manager:
def __init__(self):
super().__init__()
self._session = SSHSession()
self._session._post_connect()
m = Manager()
运行结果如下:
start...
hello world
started
由于SSHSession与Session是继承关系、Session又继承了Thread,故在运行self.start是会调用SSHSession的run方法。
start与run方法(官网)
start
()[](https://docs.python.org/zh-cn... "永久链接至目标")
开始线程活动。
它在一个线程里最多只能被调用一次。它安排对象的run()
方法在一个独立的控制进程中调用。(表明start调用了run方法)
如果同一个线程对象中调用这个方法的次数大于一次,会抛出RuntimeError
。
run
()[](https://docs.python.org/zh-cn... "永久链接至目标")
代表线程活动的方法。
你可以在子类型里重载这个方法。 标准的run()
方法会对作为_target_参数传递给该对象构造器的可调用对象(如果存在)发起调用,并附带从_args_和_kwargs_参数分别获取的位置和关键字参数。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。