精灵对象和精灵组对象,方法调用的疑问

精灵对象和精灵组对象,方法调用的疑问

图1定义分别定义了两个方法,blit_me保持子弹位置不变。update子弹飞行攻击。

图2,精灵组对象调用update不报错,调用blit_me会报错?单个精灵对象调用blit_me就可以顺利运行。

图3,ctrl+点击update查看源码,bullet继承自类Sprite,改写的是类AbstractGroup下update方法

问1:这两个方法在调用的时候有何区别?精灵组对象调用报错'Group' object has no attribute 'blit_me'

问2:类bullet继承自类Sprite类,加到pygame.sprite.Group() 精灵组中怎么就继承自类AbstractGroup?

update改写的应该是类Sprite下的方法,调用的时候就变成改写类AbstractGroup下的方法了?

http://img1.sycdn.imooc.com//climg/5d61f2070001846713331037.jpg

http://img1.sycdn.imooc.com//climg/5d61f20700012fe713361040.jpg


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

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

2回答
好帮手乔木 2019-08-26 10:36:43

同学你好:

Bullet是精灵类(Sprite),定义的bullets是精灵组(Group),将初识化的bullet使用add方法添加到bullets精灵组中。

http://img1.sycdn.imooc.com//climg/5d6342270001b3b203470037.jpg

http://img1.sycdn.imooc.com//climg/5d6342380001791104560068.jpg

blit_me是在精灵类中定义的方法,所以是Sprite的方法,不是Group的方法。因此会报错,只要将组遍历成Sprite即可使用。

http://img1.sycdn.imooc.com//climg/5d63433d0001ba6e08460209.jpg

update()方法·在Sprite类中是调用(call by)的Group中的update()方法。

http://img1.sycdn.imooc.com//climg/5d6343bb0001046d11280564.jpg

2.Group类和Sprite类没有继承关系,但是Group类继承了AbstractGroup类。python中所有的额东西都可以成为对象,也可以成为参数,使用Group时,可以将Sprite看做一个参数即可。

http://img1.sycdn.imooc.com//climg/5d6345620001633e08910545.jpg

http://img1.sycdn.imooc.com//climg/5d63458c0001076c08810354.jpg

object代表初始类,也叫做基类。

如果我解决了同学的问题,请采纳!学习·愉快^_^。

提问者 lin丶林 2019-08-25 10:55:15

上传之后发现少了图3。。。http://img1.sycdn.imooc.com//climg/5d61f88e0001d27b13371040.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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