在Python pygame中理解self

时间:2016-02-18 11:33:38

标签: python pygame sprite self

你好我是一名初学Python程序员,正在开发一个平台pygame游戏,同时查看来自http://programarcadegames.com/python_examples/en/sprite_sheets/的一些代码,有一个关于玩家类的特定部分,我不明白。

从玩家类中,第102行的代码部分

    block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)

由于未在此类中声明platform_list,如何以这种方式使用它?另外,怎么可能做level.platform_list?我已经尝试过上面提到的网站上的代码并且它运行良好,但我不明白这是如何工作的。任何人都可以向我解释这个吗?谢谢!

3 个答案:

答案 0 :(得分:0)

在第13行,定义了Player类。在其__init__方法的第39行,其level属性初始化为None。可以推测该属性稍后会更改,因为它在第104行上用于获取其platform_list属性:block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)

答案 1 :(得分:0)

正如@zondo所说,Player类定义level属性并将其初始化为None

他的答案中缺少的一步是main()platform_scroller.py填充了第57行的cuurent级别。由于这是一个Level类,它有{{1}可以通过platform_list对象中的self.level.platform_list访问属性。

答案 2 :(得分:-1)

在Player类的第37-38行附近初始化为None。

# List of sprites we can bump against
self.level = None