一个关于类中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有什么区别的?我编译都可以通过,都显示有一个小飞船在底部中央。

此外,为什么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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值