2017-10-05 64 views
0

我看到了一行代码在做的目的代码的几行穿线:多线程Python中设置_Thread属性

thread = Thread(target = self.run) 
    thread.start() 
    setattr(self, "_thread", thread) 

什么做的最后一行代码做什么,不设置_Thread =线程实现?

回答

0

python下划线用于指示其他语言中可能是私有属性的内容。 PEP8:

_single_leading_underscore:weak“internal use”indicator。例如。从M import *不导入名称以下划线开头的对象。

setattr(self, "_thread", thread) 

应该做基本相同

self._thread = thread 

它可以在Python文档here中找到。

他为什么要做第一个而不是后者我也解释不了,如果你提供更多的上下文可能会更容易回答。

+0

在整个代码中,这是唯一引用_thread的地方,我的猜测是这在线程过程中有所作用?将此属性设置为线程是为了什么目的? – Liam

+0

'self._x = x'的目的通常是为了存储一个值,或者在这种情况下是对'thread'的引用。 如果没有这一行,线程对象将在方法的末尾被删除(或者如果它位于另一个范围内,则无法从这三行中看出范围)。 – Mefaso