Python系列课程:图形库Turtle的使用(二)

Python系列课程:图形库Turtle的使用(一)
Python系列课程:图形库Turtle的使用(二)
Python系列课程:图形库Turtle的使用(三)

  我们来深度分析下Turltle这个绘图工具类的代码



  如下代码可以正常的执行

#coding:utf-8
#引入turtle外部库,turtle是python中一个绘制图像的外部库
import turtle 

myTurtle = turtle.Turtle();   
myTurtle.forward(100);

turtle.done();

疑问1:为什么上述代码不能写成如下形式

#coding:utf-8
#引入turtle外部库,turtle是python中一个绘制图像的外部库
import turtle 

myTurtle = turtle.Turtle();   
myTurtle.forward(100);

myTurtle.done();

  分析如下

先看下Turtle的继承关系,如下图所示
这里写图片描述
  可以看出当我们通过turtle.Turtle() 创建Turtle的实例之后,便可以通过该实例调用其父类的方法,此处的 forward() 即是父类的TNavigator.java的方法,
  但是done() 并不是Turtle类所拥有的方法,它是turtle.py模块拥有的方法,顾只能写为turtle.done();

疑问2:turtle.done()方法的作用是什么
我们先看下源码

done = mainloop = TK.mainloop

他调用TK的mainloop方法

def mainloop(n=0):
    """Run the main loop of Tcl."""
    _default_root.tk.mainloop(n)

这里的done()其实就是开启一个消息循环,循环接收其他事件如按键事件,通过这个方法,Turtle的图形窗口就不会消失,可以持续接受按键事件;
你可以将turtle.done()方法注释掉看下,Turtle的图形窗口会一闪就消失了



疑问3:为什么如下代码Eclipse中会报Undefined variable from import: forward

#coding:utf-8
#引入turtle外部库,turtle是python中一个绘制图像的外部库
import turtle 

turtle.forward(100);

turtle.done();

在调用forward方法的时候,编译器会报红色,但是不影响运行,这是因为forwoard是父类TNavigator当中的方案,按照IDE即Eclipse设置的检查规范来说,只有通过类的实例才能调用该方法;所以此处IDE报了红色error;



疑问4:那为什么运行时确能正常执行?
这是因为在通过import turtle之后,在编译的时候,turtle模块会被导入,编译器在编译turtle.py的时候,会生成forward方法,此时就相当于forward方法是turtle自己的方法了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值