0

我一直按照我的“think python”书(3.x 版本)中的说明进行操作,并且我已经完成了书中告诉我的所有事情,但是在其中一个练习中我仍然遇到了一个奇怪的错误?

这就是问题所在:我应该玩模块“swampy”中的“TurtleWorld”,这就是我所拥有的(这正是书中所写的)

from TurtleWorld import *

world = TurtleWorld()
bob   = Turtle

print (bob)

fd(bob, 100)
lt(bob)
fd(bob, 100)

wait_for_user()

当我尝试运行此代码时,它应该启动一个名为 TurtleWorld 的新程序,在那里您应该看到一只乌龟向东然后向北移动,留下两条线段,但是当我尝试运行该程序时,我收到此错误:

Traceback (most recent call last):
  File "D:\Python34\Lib\swampy-2.1.5\Polygon.py", line 8, in <module>
    fd(bob, 100)
  File "D:\Python34\Lib\swampy-2.1.5\TurtleWorld.py", line 179, in fd
    x, y = self.x, self.y
AttributeError: type object 'Turtle' has no attribute 'x'

这真的让我很奇怪吗?就像我说的,我已经 100% 地遵循了这本书。

顺便说一下,这本书是这样说的:

“第一行是我们之前看到的 import 语句的变体;它不是创建模块对象,而是直接从模块中导入函数,因此您可以在不使用点符号的情况下访问它们。

接下来的几行创建了一个分配给世界的 TurtleWorld 和一个分配给 bob 的 Turtle。打印 bob 会产生类似的结果:

<TurtleWorld.Turtle object at 0x00FD1CD0>W

但是当我使用“打印(鲍勃)”时,我明白了吗?

<class 'TurtleWorld.Turtle'>

我很乐意提供您需要的任何信息来帮助我:)

本书在线版链接:http ://faculty.stedwards.edu/mikek/python/thinkpython.pdf

第 47-48 页是解释这些东西的地方

这是 Swampy 下载的链接:http: //www.greenteapress.com/thinkpython/swampy/

我通过将“swampy”文件夹解压缩到“libs”文件夹中来安装 swampy,因此模块的目录现在如下所示:

D:\Python34\Lib\swampy-2.1.5

4

2 回答 2

1

Turtle是一个创建新Turtle对象的类。

你需要的是这样一个新的对象。您必须“调用”该类来创建一个新对象:

bob   = Turtle()
于 2015-06-30T15:48:47.413 回答
1

bob 应该被实例化为Turtle类的对象,而不是将Turtle类分配给它。

例子 -

bob   = Turtle()

或者

bob   = Turtle(world)
于 2015-06-30T15:49:09.017 回答