ai_game为什么不用赋予实参


import pygame

class Ship:
    """管理飞船的类"""
    
    def __init__(self,ai_game):
        """初始化飞船并设置其初始位置"""
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()
        
        #加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()
        
        #对于每艘新飞船,都将其放置在屏幕底部中央
        self.rect.midbottom = self.screen_rect.midbottom
    
    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image,self.rect)import sys

import pygame

from settings import Settings
from ship import Ship

class AlienInvasion:
    """管理游戏资源和行为的类"""
    
    
    def __init__(self):
        """初始化游戏并创建游戏资源"""
        pygame.init()
        self.settings=Settings()
        
        self.screen=pygame.display.set_mode(
            (self.settings.screen_width,self.settings.screen_height))
        pygame.display.set_caption("Alien Invasion")
        
        #此处创建实例为什么没有给ai_game一个实参?
        self.ship = Ship(self)
        
        #设置背景色
        self.bg_color = (self.settings.bg_color)
        
    def run_game(self):
        """开始游戏主循环"""
        while True:
            #监视键盘和鼠标事件
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    #退出窗口
                    pygame.quit()
                    #退出游戏
                    sys.exit()
                    
            #每次循环时都重绘屏幕
            self.screen.fill(self.settings.bg_color)
            self.ship.blitme()            
            
            #让最近绘制的屏幕可见
            pygame.display.flip()
            
if __name__ == '__main__':
    #创建游戏实例并运行游戏
    ai=AlienInvasion()
    ai.run_game()   
        

ai_game就是一个实参,一般调用的时候Ship(),括号里面给一个值就行