一個關於類中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