【问题标题】:object.__new__ takes no parameters [closed]object.__new__ 不带参数[关闭]
【发布时间】:2016-04-03 23:01:26
【问题描述】:

我在一段 python 代码中不断收到以下错误:

Traceback (most recent call last):     
File"..."...in <module>   
app = App(root)  
TypeError: object.__new__() takes no parameters  

这是它所指的代码:

from tkinter import *
from ScaleAndOffsetConverter import *

class App():
    def __init_(self, master):

        self.c_var = DoubleVar()
        self.t_conv.ScaleAndOffsetConverter("F", "C", 1.8, 32)
        frame = Frame(master)
        frame.pack()
        L1 = Label(frame, textvariable = self.result_var)
        L2 = Label(frame, text = "Deg C")
        E = Entry(frame, textvariable=self.c_var)
        L3 = Label( frame, text = "Deg F")
        B = Button(frame, text = "convert", command = self.convert)
        L1.grid(row=1,column=1)
        L2.grid(row=1, column=0)
        E.grid(row=0, column=1)
        L3.grid(row=0,column=0)
        B.grid(row=2, columnspan=2)
        self.result_var = DoubleVar

     def convert(self):
           c = self.c_var.get()
           self.result_var.set(self.t_conv.convert(c))

root = Tk()
app = App(root)
root.wm_title("Temp Converter")
root.mainloop()

我知道类似的问题已经发布到这个问题,但我仍然不完全了解如何解决这个问题 - 有人知道它为什么会出现或如何解决它吗?

【问题讨论】:

  • self.t_conv.ScaleAndOffsetConverter 也会失败
  • Raspberry Pi 及其 Debian 衍生产品与此问题无关。我假设您添加它们是因为您在那里运行代码,但除非它实际上与操作系统相关,否则请不要添加这些标签。此外,我希望def convert(self) 的缩进只是格式错误...

标签: python


【解决方案1】:

您的__init__() 函数拼写错误!

替换

def __init_(self, master):

def __init__(self, master):

确保单词 init 前后有双下划线。这些函数被称为“dunder”方法,正如您所见,下划线的数量很重要!

Python 查找您的__init__ 实现但找不到它,因此它使用Object__init__,除了根据this 帖子检查没有参数传递给它之外什么也不做。此检查会生成您所看到的 TypeError

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2011-07-06
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多