Несвязанный метод Python TypeError - PullRequest
15 голосов
/ 16 мая 2011

Метод get_pos должен захватывать то, что пользователь вводит в запись.Когда get_pos выполняется, возвращается:

TypeError: необязательный метод 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

Ответы [ 3 ]

43 голосов
/ 16 мая 2011

Вы сообщили об этой ошибке:

TypeError: необязательный метод get_pos () должен вызываться с экземпляром приложения в качестве первого аргумента (вместо этого ничего не получил)

Что это означает с точки зрения непрофессионала, что вы делаете что-то вроде этого:

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

Вместо этого вам нужно сделать что-то вроде этого:

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

Трудно получить что-то более конкретное, чем это, потому что вы не показали нам реальный код, который вызывает ошибки.

16 голосов
/ 30 января 2013

Я столкнулся с этой ошибкой, когда забыл добавить скобки к имени класса при создании экземпляра класса:

из my.package import MyClass

# wrong
instance = MyClass

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

# right
instance = MyClass()


instance.someMethod()
2 голосов
/ 16 мая 2011

Мой хрустальный шар говорит мне, что вы привязываете app.get_pos к кнопке, используя класс app (который на самом деле должен называться App) вместо создания экземпляра app_instance = app и использования app_instance.get_pos.

Конечно, как уже отмечали другие, есть много других проблем с кодом, который вы опубликовали, поэтому трудно предположить ошибки в коде, который вы не опубликовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...