python类中的方法vs __init__

时间:2016-06-17 20:29:10

标签: python class subprocess

我对这些方法的理解是:

  • __init__()就像构造函数。
  • 当此类的线程启动时,将调用
  • run()

但为什么我们需要一个run方法呢?我们是否可以实例化该类的对象,并且所有初始化都保留在__init__()

我经历过this article,无法从中获益 你能否就此分享一些见解?

3 个答案:

答案 0 :(得分:1)

我认为Python线程模块提供了一个很好的例子。如果你有一个派生的线程类总是运行相同的函数,但也许你想给它不同的输入怎么办?您可能希望实例化该类的许多对象但具有不同的输入 - 并且您不希望它开始运行。

也许您希望将这个实例化(但未启动)的线程列表传递给某种类型的管理器,无论它们是什么类型的线程,它都会启动并监视它们。

在这种情况下,最好将创建与运行分开。

答案 1 :(得分:1)

__init__运行一次(构造对象时),而run(在您给出的示例中)在后台运行(另一个进程),只要该对象存在。

__init__run之间的唯一区别是第一个在主线程中运行,而第二个在另一个线程中运行。

  

但为什么我们需要一个run方法呢?我们可能已经实现了一个类的对象,并且所有初始化都保留在_init__中?

事实上,所有inializations已经在__init __。该示例中的run方法只演示了一个后台线程,并不是必需的。

答案 2 :(得分:0)

关于__init__()是构造函数,你是对的。在此示例中,目标是在线程中运行函数run()。该示例提供了一种干净的方法。您无法在run()内的__init__()函数内运行代码,因为这不会产生新的线程。

考虑这个案例:

example = ThreadingExample()
do_something_important_that_doesnt_want_to_wait()

这适用于示例代码。