def __init__(self, screen):
"""初始化飞船并设置其初始位置"""
self.screen = screen
# 加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = self. screen.get_rect()
另一种写法,最后一句不同:
def __init__(self, screen):
"""初始化飞船并设置其初始位置"""
self.screen = screen
# 加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
"""初始化飞船并设置其初始位置"""
self.screen = screen
# 加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = self. screen.get_rect()
另一种写法,最后一句不同:
def __init__(self, screen):
"""初始化飞船并设置其初始位置"""
self.screen = screen
# 加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
最后一句self.screen_rect = screen.get_rect() 要不要self有什么区别的?我编译都可以通过,都显示有一个小飞船在底部中央。
此外,为什么self.rect = self.image.get_rect() 这里面的self却是必须要的,为什么呢?
CSDN中的random7 的解答:
self.screen用的是本类对象的变量screen
直接用screen用的是函数参数里面的screen
因为有self,screen=screen,所以调用方式不一样,但是结果是一样的
后面的image去掉self,解释器并不能找到image这个变量,所以报错
self指代本类生成的一个当前对象
pythontab论坛中的jackielu解答:
self.screen 和 self.imag 都是成员变量
不同的是 self.screen是通过形参复制的 也就是传递的参数screen 而self.imag是通过函数内部自行赋值的
编译通过是因为self.screen通过赋值之后 self.screen和screen是一回事 不会报错
但是imag必须加self 是因为没有其他参数名字叫imag
在此,再次感谢两位的解答!