我创建了类webviewThread,在其中我创建了run函数,在其中我传递了两个参数“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")
我正在传递参数的值,但它给出了错误
在此行中:
您正在为
webviewThread
类创建一个新的实例。当您在该实例上调用方法(如start()
)时,self
参数(引用实例本身)将自动作为其第一个参数传递给该方法。你知道吗但是,如果您在类对象本身上调用一个方法,就像您在这里所做的那样:
self
将不会被传递,正如错误所示。相反,您需要对创建的webviewThread
实例调用方法:从您的代码示例中,虽然我没有看到
webviewThread
类有一个start()
方法,所以您可能需要调用webObj.run()
下面是一些解释Python类和
self
的参考资料。你知道吗更新:
关于更新后的文章标题中列出的错误:
TypeError start() takes 1 positional argument but 2 were given
,发生这种情况是因为您正在实例上调用start()
,并传递"facebook"
参数。由于尚未重写超类Thread
的start()
方法,因此将调用Thread
的start()
方法,该方法只接受一个参数:self
(传递的是self
,在实例上调用该方法时会自动发生,而传递的是"facebook"
)。你知道吗相关问题 更多 >
编程相关推荐