Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Unbound Method TypeError

The method get_pos is supposed to grab what the user inputs in the entry. When get_pos is executed, it returns with:

TypeError: unbound method get_pos() must be called with app instance as first argument (got nothing instead)

Code:

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
like image 488
Steven Avatar asked May 16 '11 03:05

Steven


2 Answers

You reported this error:

TypeError: unbound method get_pos() must be called with app instance as first argument (got nothing instead)

What this means in layman's terms is you're doing something like this:

class app(object):
    def get_pos(self):
        ...
...
app.get_pos()

What you need to do instead is something like this:

the_app = app()  # create instance of class 'app'
the_app.get_pos() # call get_pos on the instance

It's hard to get any more specific than this because you didn't show us the actual code that is causing the errors.

like image 86
Bryan Oakley Avatar answered Sep 30 '22 13:09

Bryan Oakley


I've run into this error when forgetting to add parentheses to the class name when constructing an instance of the class:

from my.package import MyClass

# wrong
instance = MyClass

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

# right
instance = MyClass()


instance.someMethod()
like image 38
hawkgas Avatar answered Sep 30 '22 14:09

hawkgas