Python未绑定方法TypeError

Ste*_*ven 15 python methods tkinter

该方法get_pos应该抓住用户在条目中输入的内容.当get_pos被执行时,它返回一个:

TypeError:必须使用app instance作为第一个参数调用unbound方法get_pos()(没有任何内容)

码:

class app(object):
    def __init__(self,root):
        self.functionframe=FunctionFrame(root, self)
            self.functionframe.pack(side=BOTTOM)
    def get_pos(self):
        self.functionframe.input(self)
class FunctionFrame(Frame):
    def __init__(self,master,parent):
        Frame.__init__(self,master,bg="grey90")
        self.entry = Entry(self,width=15)
        self.entry.pack
    def input(self):
        self.input = self.entry.get()
        return self.input
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 43

你报告了这个错误:

TypeError:必须使用app instance作为第一个参数调用unbound方法get_pos()(没有任何内容)

外行人的意思是你做的是这样的事情:

class app(object):
    def get_pos(self):
        ...
...
app.get_pos()
Run Code Online (Sandbox Code Playgroud)

你需要做的是这样的事情:

the_app = app()  # create instance of class 'app'
the_app.get_pos() # call get_pos on the instance
Run Code Online (Sandbox Code Playgroud)

很难得到比这更具体的东西,因为你没有向我们展示导致错误的实际代码.

  • 从Python 3.0开始:`已经从语言中删除了"未绑定方法"的概念.当引用一个方法作为类属性时,你现在得到一个普通的函数对象.所以这个例子是有效的python 3.X代码,因为没有"未绑定的方法"只是附加到类对象的函数. (10认同)

小智 16

在构造类的实例时忘记在类名中添加括号时遇到此错误:

从my.package导入MyClass

# wrong
instance = MyClass

instance.someMethod() # tries to call MyClass.someMethod()

# right
instance = MyClass()


instance.someMethod()
Run Code Online (Sandbox Code Playgroud)


Dun*_*can 3

我的水晶球告诉我,您正在app.get_pos使用该类app(实际上应该称为App)绑定到按钮,而不是创建一个实例app_instance = app并使用app_instance.get_pos.

当然,正如其他人指出的那样,您发布的代码存在很多其他问题,很难猜测您未发布的代码中的错误。