类方法有问题

时间:2016-06-05 17:16:06

标签: python methods

所以我完全不知道为什么我的Player类方法不起作用。

这是我的Player类的一部分:

class Player( pygame.sprite.Sprite ):
    def __init__( self ):

        super( Player, self ).__init__()
        self.size = self.w,self.h = 75,75
        self.image = pygame.Surface( ( self.size ) )
        self.image.fill( white )

        self.move_y = 0
        self.move_x = 0

        self.level = None

        def set_properties(self):

            self.rect = self.image.get_rect()

            self.speed = 5

        def set_position( self, x, y ):
            self.rect.x = x
            self.rect.y = y

这是我调用方法set_position。

的地方
player = Player()
player.set_position( 40, 40 )

一切似乎都很好,但我收到以下错误消息:

Traceback (most recent call last):
  File "C:/Desktop/CubeRunner/main_v2.py", line 194, in <module>
    player.set_position( 40, 40 )
AttributeError: 'Player' object has no attribute 'set_position'

1 个答案:

答案 0 :(得分:2)

正如莫里斯所说,你的问题在于你的缩进。 Python对代码中的缩进非常严格,因为它非常重要。缩进取代花括号,分号等

以下是具有适当缩进的代码:

class Player( pygame.sprite.Sprite ):
    def __init__( self ):

        super( Player, self ).__init__()
        self.size = self.w,self.h = 75,75
        self.image = pygame.Surface( ( self.size ) )
        self.image.fill( white )

        self.move_y = 0
        self.move_x = 0

        self.level = None

    def set_properties(self):

        self.rect = self.image.get_rect()

        self.speed = 5

    def set_position( self, x, y ):
        self.rect.x = x
        self.rect.y = y

如果您想了解有关Python缩进的更多信息(以及为什么会这样),请查看以下答案: