Python关于在类中的疑问

ship.py
class Ship:
def init(self, ai_game):
self.screen = ai_game.screen#为什么这里是ai_game·screen,点是什么意思,ai_game起什么作用

alien_invasion.py
class AlienInvasion:
def init(self):
pygame.init()
self.settings = Settings()
self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_heigh))
pygame.display.set_caption("Alien_Invasion")
self.bg_color = (self.settings.bg_color)
self.ship = Ship(self)#为什么是要加self,加和不加有什么区别

self.screen=ai_game.screen中将屏幕赋给了Ship的一个属性,以便在这个类的所有方法能够轻松访问
self.ship=Ship(self)是创建了一个Ship实例,当调用Ship()时,必须提供一个参数:一个 AlienInvasion实例。在示例中,self指向的是当前 AlienInvasion实例,这个参数让Ship能够访问游戏资源,将实例Ship赋给了 self.ship

ai——game是函数参数啊,可能是个类或者结构,然后ai_game.screen表示在ai_game对象内还有个screen变量
self.ship = Ship(self) ====必须加self啊,因为ship类的初始化函数是带参数的,也就是ai_game。也就是类AlienInvasion中有个类Ship的成员变量,且Ship类初始化的时候需要AlienInvasion类中的成员变量screen。
建议修改一下,Ship类构造中不要传递AlienInvasion类对象,只需要传递screen值就可以了

小白的回答:
类似于变量的相互调用,复制到编辑器里面运行一下。

class Cs:
    def __init__(self,ai):
        self.iii = ai.nome
          #iii=print(self.cs.iii)
        #return iii                      #注意:如果把这两行代码放到这个位置是运行不成功的,原因:我刚开始学,分析不出来。
class Dog:
    def __init__(self):
        self.nome = 33
        self.cs =Cs(self)       #将Dog里面的变量传到Cs里面(这里的self相当于Dog的实例,ai==Dog())
        iii=print(self.cs.iii)
        return iii
ee = Dog()
#复制的时候注意缩进