我的类中有这个方法叫做“交互”:
class Interaction:
def PreparaThreadBrowser(self, User, Password):
t = ThreadBrowser(args=(User, Password), )
t.start()
以 User 和 Pass 作为参数调用一个线程。
然后我有一个名为“ThreadBrowser”的类和这个“run”方法:
class ThreadBrowser(threading.Thread):
def run (self, user, password):
self.User = user
self.Pass = password
print(self.User, self.Pass)
但事实证明,我确实在努力将参数发送到线程函数,因为它给出了执行错误:
TypeError: run() 缺少 2 个必需的位置参数:'user' 和 'password'
知道如何解决这个问题吗?
最佳答案
args
构造函数参数不能为run
提供额外的参数。它向 target 提供您未指定的参数。具体来说:
run()
的默认实现调用self.target(*self._args, **self._kwargs)
,其中_args
和_kwargs
由构造函数提供,默认分别为空元组和字典。通过实现
run
,您选择退出 Python 自动调用target(*args)
。然后由您的代码来存储您的run
将拾取的状态。惯用的选项是将其存储在构造函数中,就像您的run
方法现在所做的那样。
例如:
class ThreadBrowser(threading.Thread):
def __init__(self, user, password):
super(ThreadBrowser, self).__init__()
self.User = user
self.Pass = password
def run(self):
print(self.User, self.Pass)
然后 ThreadBrowser
可以自然地构造为 ThreadBrowser(username, password)
并像以前一样以 t.start()
启动。
关于python - 将参数传递给线程python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51235976/