Calling function causes TypeError: missing 1 required positional argument: 'self'
Calling function causes TypeError: missing 1 required positional argument: 'self'
我正在尝试创建一个 Python 程序,该程序能够打开 YouTube 视频,然后跳过其中的广告。这是我拥有的:
class MusicPlayer():
def __init__(self):
self.driver = webdriver.Safari()
self.driver.get("https://www.youtube.com/watch?v=suia_i5dEZc")
sleep(7)
skipAd = self.driver.find_element_by_class_name('ytp-ad-skip-button-container')
def skipAdFunction(self):
threading.Timer(3,skipAdFunction).start()
if(skipAd.is_enabled() or skipAd.is_displayed()):
skipAd.click()
skipAdFunction()
但是,我不确定为什么会这样,但我一直收到此错误:
Traceback (most recent call last):
File "aivoices.py", line 52, in <module>
MusicPlayer()
File "aivoices.py", line 17, in __init__
skipAdFunction()
TypeError: skipAdFunction() missing 1 required positional argument: 'self'
它与self
有关,但我确定我是否应该拥有它。有人也可以解释一下我在这种情况下是否需要它吗?
调用函数时应改为self.skipAdFunction()
。
或者,您可以在 class 之外定义 skipAdFunction
,这样您就不必在任何地方提及 self
。
编辑:
根据查尔斯的评论,这是不正确的,我很抱歉。当您在 class 方法中定义了嵌套函数时,python 不会 expect/require 您拥有位置参数 self。因此,您可以这样修复它:
class MusicPlayer():
def __init__(self):
# stuff you had here
def skipAdFunction():
threading.Timer(3,skipAdFunction).start()
if(skipAd.is_enabled() or skipAd.is_displayed()):
skipAd.click()
skipAdFunction()
我正在尝试创建一个 Python 程序,该程序能够打开 YouTube 视频,然后跳过其中的广告。这是我拥有的:
class MusicPlayer():
def __init__(self):
self.driver = webdriver.Safari()
self.driver.get("https://www.youtube.com/watch?v=suia_i5dEZc")
sleep(7)
skipAd = self.driver.find_element_by_class_name('ytp-ad-skip-button-container')
def skipAdFunction(self):
threading.Timer(3,skipAdFunction).start()
if(skipAd.is_enabled() or skipAd.is_displayed()):
skipAd.click()
skipAdFunction()
但是,我不确定为什么会这样,但我一直收到此错误:
Traceback (most recent call last):
File "aivoices.py", line 52, in <module>
MusicPlayer()
File "aivoices.py", line 17, in __init__
skipAdFunction()
TypeError: skipAdFunction() missing 1 required positional argument: 'self'
它与self
有关,但我确定我是否应该拥有它。有人也可以解释一下我在这种情况下是否需要它吗?
调用函数时应改为self.skipAdFunction()
。
或者,您可以在 class 之外定义 skipAdFunction
,这样您就不必在任何地方提及 self
。
编辑:
根据查尔斯的评论,这是不正确的,我很抱歉。当您在 class 方法中定义了嵌套函数时,python 不会 expect/require 您拥有位置参数 self。因此,您可以这样修复它:
class MusicPlayer():
def __init__(self):
# stuff you had here
def skipAdFunction():
threading.Timer(3,skipAdFunction).start()
if(skipAd.is_enabled() or skipAd.is_displayed()):
skipAd.click()
skipAdFunction()