python - 方法需要自我论证
问题描述
我在这里有这段代码,它是关于一个带有 Tkinter 的 GUI 应用程序,非常简单,但是有一个错误我无法在不破坏代码的情况下解决:
import tkinter as tk
class Sistema:
def __init__(self, g1 = 0, g2 = 0, g3 = 0, g4 = 0, media = 6):
self.g1 = g1
self.g2 = g2
self.g3 = g3
self.g4 = g4
self.media = media
resultCalc = (self.g1 + self.g2 + self.g3 + self.g4) / 4
self.resultCalc = resultCalc
Label_reply['text'] = Sistema.__str__()
def __str__(self):
if self.resultCalc < self.media:
return "Você não passou de ano! ╰(‵□′)╯"
elif self.resultCalc > self.media:
return "Você passou de ano!(~ ̄▽ ̄)~"
elif self.resultCalc == self.media:
return "Você passou de ano! Essa foi por pouco (。_。)"
else:
return "Erro fatal (╬▔皿▔)╯"
root = tk.Tk()
canvas = tk.Canvas(root, bg = "#159BA0", height = 500, width = 500)
canvas.pack()
Label1 = tk.Label(canvas, text = "Digite sua nota:")
Label1.place(x = 10,y = 10)
Entry1 = tk.Entry(canvas)
Entry1.place(x = 100,y = 10)
Label2 = tk.Label(canvas, text = "Digite sua nota:")
Label2.place(x = 10,y = 50)
Entry2 = tk.Entry(canvas)
Entry2.place(x = 100,y = 50)
Label3 = tk.Label(canvas, text = "Digite sua nota:")
Label3.place(x = 10, y = 90)
Entry3 = tk.Entry(canvas)
Entry3.place(x = 100, y = 90)
Label4 = tk.Label(canvas, text = "Digite sua nota:" )
Label4.place(x = 10, y = 130)
Entry4 = tk.Entry(canvas)
Entry4.place(x = 100, y = 130)
Label5 = tk.Label(canvas, text = "Média mínima: ")
Label5.place(x=10, y = 170)
Entry5 = tk.Entry(canvas)
Entry5.place(x=100, y = 170)
Button1 = tk.Button(canvas, text = "Enviar",
command = lambda : Sistema(float(Entry1.get()), float(Entry2.get()), float(Entry3.get()), float(Entry4.get()),
float(Entry5.get())))
Button1.place(x = 10, y = 210)
Label_reply = tk.Label(canvas)
Label_reply.place(x = 10, y = 240)
root.mainloop()
但是,当我运行它时,它会引发这个异常:
TypeError: __str__() missing 1 required positional argument: 'self'
错误在第 15 行。我知道这意味着什么以及为什么会发生,但是我找不到在不破坏代码的情况下解决它的方法,有人可以帮助我吗?
解决方案
考虑这行代码:
Label_reply['text'] = Sistema.__str__()
您是在类而不是类的实例__str__
上调用该方法。这就是它要求参数的原因。self
我假设你想调用__str__
当前对象的方法,你可以通过调用str(self)
:
Label_reply['text'] = str(self)
推荐阅读
- java - Vaadin TreeGrid - 内存数据有效,但数据库支持的数据无效
- image - 如何编辑课程图像的大小?
- amazon-web-services - 使用身份验证部署 Severless Api 的 AWS SAM 问题
- html - 将其他用户的个人 Google 日历集成到站点中
- java - 使用 Spring JDBC 实现一级缓存
- python - 检查两个数据框(数据透视表)的相似性
- scala - 斯卡拉去年
- postgresql - 在 Mac OS 上安装 Postgresql 时出现问题。重启系统后。创建菜单快捷方式时发生非致命错误
- javascript - 如何在 VuePress Vue 组件中动态加载 YAML 文件作为对象?
- java - 我将如何做到这一点,以便每当输入一个非整数值时,它会告诉用户输入一个整数值?Java - NetBeans