向线程python传递参数

2024-10-01 07:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的类中有一个叫做“交互”的方法:

class Interaction:

    def PreparaThreadBrowser(self, User, Password):
       t = ThreadBrowser(args=(User, Password), )
       t.start()

它与用户调用线程并作为参数传递。在

然后我有了一个名为“ThreadBrowser”的类,它具有以下“run”方法:

^{pr2}$

但事实证明,我确实很难将参数发送到thread函数,因为它会导致执行错误:

TypeError: run() missing 2 required positional arguments: 'user' and 'password'

你知道怎么解决这个问题吗?在


Tags: 方法run用户selfdefargspassword线程
2条回答

Run接受2个参数user,pass

import threading



class Interaction:
    def PreparaThreadBrowser(self, User, Password):
        t = ThreadBrowser(args=(User, Pass), )
        t.start()



class ThreadBrowser(threading.Thread):

    def run (self, user, password):
        self.User = user
        self.Pass = password
        print(self.User, self.Pass)



t = ThreadBrowser()
t.run("user", "pass")

args构造函数参数不能为run提供其他参数。它为target提供参数,您没有指定这些参数。具体来说:

  • run()的默认实现调用self.target(*self._args, **self._kwargs),其中_args和{}由构造函数提供,并分别默认为空元组和dict。

  • 通过实现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()开头。在

相关问题 更多 >