所以我完全不知道为什么我的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'
答案 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缩进的更多信息(以及为什么会这样),请查看以下答案: