最近在阅读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_参数分别获取的位置和关键字参数。


neilliu
59 声望9 粉丝

coder is coding code snippet,coder change the world!