目前我不是python程序员,但我正在对一些python代码进行维护,我或多或少有以下几点:
class DerivedThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def initStuff():
print "Hello 2"
def run(self):
print "Hello 1"
self.initStuff()
print "Hello 3"
initStuff
实际上并没有调用print
,只是设置了一些变量,我为组织添加了这个方法,之前只有__init__
和{
问题是,一旦执行达到self.initStuff()
,我就再也看不到后面的消息了,只有"Hello 1"
,我以为用python调用派生方法有问题,但我不知道发生了什么。在
怎么回事?在
问题在于
initStuff
方法的定义。它的定义中至少需要一个参数(通常称为“self”)(您没有定义任何参数)。让我们看看接下来会发生什么:所以很明显,您的代码在您定义的线程中以静默方式失败。在
解决这个问题的方法是按照Python规则定义
^{pr2}$initStuff
方法。在这种方法称为instancemethod,因为它是代表类实例调用的(第一个参数是必须显式定义的实例对象本身)。在
阅读有关documentation中类的更多信息。在
我明白了,我只需要把
self
作为参数传递给initStuff
。在相关问题 更多 >
编程相关推荐