Kivy/Python:缺少 1 个必需的位置参数
Kivy/Python: missing 1 required positional argument
我不太熟悉 classes/class 方法及其工作原理,而且我知道我的代码很糟糕!我想涉足 UI 的世界,所以我想使用我在 Python 中编写的一个简单函数,看看我是否可以用它创建一个应用程序。 (编辑:如果今天不是星期一,脚本会生成一个“:(”,如果今天是星期一,则会生成一个“:)”。)(双重编辑:这是我的第一个 post,我为我的无知回复:编码以及 Stack Overflow 格式化。)我们有:
#!/usr/bin/env python
from kivy.app import App
from kivy.uix.label import Label
import datetime
from datetime import date
import calendar
today = date.today().strftime('%Y-%d-%m')
def findDay(self, today):
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
class MyApp(App):
def build(self):
today = date.today().strftime('%Y-%d-%m')
z = findDay(today)
return Label(z)
if __name__ == "__main__":
MyApp().run()
出现错误:
Traceback (most recent call last):
File "main.py", line 30, in <module>
MyApp().run()
File "/Users/myusernamehere/opt/anaconda3/lib/python3.7/site-packages/kivy/app.py", line 829, in run
root = self.build()
File "main.py", line 26, in build
z = findDay(today)
TypeError: findDay() missing 1 required positional argument: 'today'
我知道这个错误是由于 class... (除非它与“自我”有关?)
I know this error arises from incorrect instantiation of an object of a class... but based on how I have defined "today", I am unsure what this means in my given context! (Unless it has to do with "self"?)
findDay
只是一个函数,跟你的class没有关系。
正如您定义的那样,它有两个参数,您将其命名为 self
和 today
。当你调用它时,你只传递了一个参数(绑定到名称 self
,第一个参数),因此你得到一个错误,你没有传递 1 个必需的位置参数,那个名为 today
.
由于该函数不依赖于与您的 class 相关的任何内容,我猜您的意思是它只是一个普通函数,您应该删除 self
参数,因为它没有任何用途.
只有在编写实例方法时(在class中)才需要self
。
对于正常功能,您不需要在签名中使用 self
。
这应该可以正常工作:
def findDay(today):
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
函数没有状态,因此它们不需要 self
作为参数。
#!/usr/bin/env python
from kivy.app import App
from kivy.uix.label import Label
import datetime
from datetime import date
import calendar
today = date.today().strftime('%Y-%d-%m')
def findDay(today): # Changed here
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
class MyApp(App):
def build(self):
today = date.today().strftime('%Y-%d-%m')
z = findDay(today)
return Label(z)
if __name__ == "__main__":
MyApp().run()
我不太熟悉 classes/class 方法及其工作原理,而且我知道我的代码很糟糕!我想涉足 UI 的世界,所以我想使用我在 Python 中编写的一个简单函数,看看我是否可以用它创建一个应用程序。 (编辑:如果今天不是星期一,脚本会生成一个“:(”,如果今天是星期一,则会生成一个“:)”。)(双重编辑:这是我的第一个 post,我为我的无知回复:编码以及 Stack Overflow 格式化。)我们有:
#!/usr/bin/env python
from kivy.app import App
from kivy.uix.label import Label
import datetime
from datetime import date
import calendar
today = date.today().strftime('%Y-%d-%m')
def findDay(self, today):
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
class MyApp(App):
def build(self):
today = date.today().strftime('%Y-%d-%m')
z = findDay(today)
return Label(z)
if __name__ == "__main__":
MyApp().run()
出现错误:
Traceback (most recent call last):
File "main.py", line 30, in <module>
MyApp().run()
File "/Users/myusernamehere/opt/anaconda3/lib/python3.7/site-packages/kivy/app.py", line 829, in run
root = self.build()
File "main.py", line 26, in build
z = findDay(today)
TypeError: findDay() missing 1 required positional argument: 'today'
我知道这个错误是由于 class... (除非它与“自我”有关?)
I know this error arises from incorrect instantiation of an object of a class... but based on how I have defined "today", I am unsure what this means in my given context! (Unless it has to do with "self"?)
findDay
只是一个函数,跟你的class没有关系。
正如您定义的那样,它有两个参数,您将其命名为 self
和 today
。当你调用它时,你只传递了一个参数(绑定到名称 self
,第一个参数),因此你得到一个错误,你没有传递 1 个必需的位置参数,那个名为 today
.
由于该函数不依赖于与您的 class 相关的任何内容,我猜您的意思是它只是一个普通函数,您应该删除 self
参数,因为它没有任何用途.
只有在编写实例方法时(在class中)才需要self
。
对于正常功能,您不需要在签名中使用 self
。
这应该可以正常工作:
def findDay(today):
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
函数没有状态,因此它们不需要 self
作为参数。
#!/usr/bin/env python
from kivy.app import App
from kivy.uix.label import Label
import datetime
from datetime import date
import calendar
today = date.today().strftime('%Y-%d-%m')
def findDay(today): # Changed here
day = datetime.datetime.strptime(today, '%Y-%d-%m').weekday()
y = (calendar.day_name[day])
if y == 'Monday':
x = ':)'
return x
else:
x = ':('
return x
print(x)
class MyApp(App):
def build(self):
today = date.today().strftime('%Y-%d-%m')
z = findDay(today)
return Label(z)
if __name__ == "__main__":
MyApp().run()