不是很懂类变量和实例变量

不是很懂类变量和实例变量

class Plane(pygame.sprite.Sprite):
    """
    飞机的基类
    """
    #飞机的图片
    plane_images = []
    #飞机爆炸图片
    destroy_images = []
    #坠毁的音乐地址
    down_sound_src = None
    #飞机的状态:True:活的 False:死的
    active = True
    #该飞机发射的子弹精灵组
    bullets = pygame.sprite.Group()
    def __init__(self,screen,speed=None):
        super().__init__()
        self.screen = screen
        # 加载静态资源
        self._img_list = []
        self._destroy_img_list = []
        self.down_sound = None
        self.load_src()
        # 飞行的速度
        self.speed = speed or 10
        # 获取飞机的位置
        self.rect = self._img_list[0].get_rect()

前面对类变量讲的和用的都很少,什么时候要设置类变量,比如这里飞机的速度为什么要设置为实例变量而不设置为类变量。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
慕猿梦 2019-05-30 11:23:28

同学,你好,1、类变量可以通过类和实例去调用,实例变量只能通过实例去调用,

2、如果将类实例化为一个对象时,该对象先找实例化变量,然后再去找类变量。在匹配速度上,实例变量优于类变量,但是如果直接使用类调用变量的话,只能使用类变量。

3、同学在实际项目中可根据需求选择使用,项目中飞机类需要实例化好多架飞机,每架飞机都有速度属性,实例化后的对象先去找实例变量,在匹配速度上优于类变量。

如果我的回答解决了你的疑惑,欢迎采纳!!祝学习愉快~~~~~


  • 提问者 进击的蜂蜜 #1
    如果我不在基类中设置类变量:飞机的图片、爆炸图片,而是设置实例变量把对应的图片对象的list穿进去也可以吧: def __init__(self, screen, speed=None,plane_img_list,plane_broken_img_list): super().__init__() self.screen = screen # 加载静态资源 self.img_list = plane_img_list self.destroy_img_list = plane_broken_img_list self.down_sound = None self.load_src() # 飞行的速度 self.speed = speed or 10 # 获取飞机的位置 self.rect = self._img_list[0].get_rect()
    2019-05-30 14:31:26
  • 慕猿梦 回复 提问者 进击的蜂蜜 #2
    同学,你这样也是可以的,但是同学在实例化该飞机类时,每次都需要对其飞机的图片、爆炸图片等属性进行传参,建议同学跟着视频操作。
    2019-05-30 16:05:49
  • 提问者 进击的蜂蜜 回复 慕猿梦 #3
    嗯嗯 懂了一些
    2019-05-30 16:12:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师