一个关于类中self的问题

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_rect = screen.get_rect()   要不要self有什么区别的?我编译均可以经过,都显示有一个小飞船在底部中央。html

此外,为何self.rect = self.image.get_rect() 这里面的self倒是必需要的,为何呢?
python

CSDN中的random7  的解答:
self.screen用的是本类对象的变量screen
直接用screen用的是函数参数里面的screen
由于有self,screen=screen,因此调用方式不同,可是结果是同样的
后面的image去掉self,解释器并不能找到image这个变量,因此报错
self指代本类生成的一个当前对象 
dom


pythontab论坛中的jackielu解答:函数

self.screen 和 self.imag 都是成员变量
不一样的是 self.screen是经过形参复制的 也就是传递的参数screen 而self.imag是经过函数内部自行赋值的
编译经过是由于self.screen经过赋值以后 self.screen和screen是一回事 不会报错
可是imag必须加self 是由于没有其余参数名字叫imag
ui

在此,再次感谢两位的解答!spa