Python: несвязанный метод

1

Когда я пытаюсь связать метод, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "pygametest3.py", line 12, in <module>
    render = winback.rend()
TypeError: unbound method rend() must be called with winback instance as first argument (got nothing instead)

Это код, вплоть до оскорбительной точки:

import sys, pygame

pygame.init()

class winback:
    """Render the window"""
    def rend(self):
        rendsurf.fill(black)
        rendsurf.blit (landsurf, (landx,landy,640,480))
        screen.blit (rendsurf, (0,0,640,480))
        pygame.display.flip()
render = winback.rend()

Кроме того, я сожалею, если это наглядно очевидно и не стоит публиковать/переставлять. Это мое первое реальное погружение в питон, я работал над этим весь день, я чувствую себя глупо, а это 12:30 утра.

Теги:

1 ответ

4

Классы должны быть инстанцированы до того, как может быть вызван нормальный метод.

class Winback(object):
  def rend(self):
    ...

winback = Winback()
render = winback.rend()

Или вы можете использовать @staticmethod. Но вместо этого сделайте это функцией уровня модуля.

  • 1
    Можно также отметить, что последняя строка winback().rend() также будет работать, если она будет написана так: winback().rend() , а поскольку rend() фактически не возвращает ничего, нет причин назначать для render .
  • 1
    Хорошо, это имеет смысл. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню