gpt4 book ai didi

python - 发生异常 : TypeError start() takes 1 positional argument but 2 were given in multithreading python

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:51 29 4
gpt4 key购买 nike

我创建了 webviewThread 类,在其中创建了 run 函数,在其中传递 2 个参数“self, openWhat”,但它在运行时给出错误。这是我的代码

class webviewThread(Thread):
def run(self,openWhat):

if openWhat=="facebook":
webview.create_window('Facebook', 'http://www.fb.com')
webview.start()

elif openWhat=="youtube":
webview.create_window('Facebook', 'http://www.youtube.com')
webview.start()

webObj=webviewThread()

def openfacebook():
webObj.start("facebook")

我正在传递参数的值,但它给出了错误

最佳答案

在这一行中:

webObj=webviewThread()

您正在创建 webviewThread 类的新实例。当您调用该实例上的方法(例如 start())时,self 参数(引用实例本身)将自动传递给该方法作为其第一个参数。

但是,如果您调用类对象本身的方法,就像您在这里所做的那样:

webviewThread.start()
正如您的错误所示,

self 将不会被传递。相反,您需要在您创建的 webviewThread 实例上调用该方法:

webObj.start()

从您的代码示例中,我没有看到 webviewThread 类具有 start() 方法,因此您可能需要调用 webObj.run ()

这里有一些解释 Python 类和 self 的资源。

更新:

关于您更新后的帖子标题中列出的错误:TypeError start() 需要 1 个位置参数,但给出了 2 个,发生这种情况是因为您正在调用 start() code> 在您的实例上,并传递 "facebook" 参数。由于您尚未重写父类(super class) Threadstart() 方法,因此您将调用 Threadstart() 方法,只接受一个参数:self(您正在传递 self,当您在实例上调用该方法时会自动发生,并且 ” facebook" 您明确传递的)。

关于python - 发生异常 : TypeError start() takes 1 positional argument but 2 were given in multithreading python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57451626/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com