我应该制作一个物体,但当我试图控制我的物体时,它缺少属性?沼泽

时间:2015-06-30 15:44:53

标签: python python-3.x swampy

我一直在遵循我的#34; think python" book(3.x的版本),我已经完成了本书告诉我的所有内容,但我仍然在其中一个练习中遇到了一个奇怪的错误?

问题在于: 我应该玩#34; TurtleWorld"来自模块" swampy",以及我所得到的(这正是书中所写的内容)

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%跟随这本书。

顺便说一下这本书:

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

接下来的行创建一个分配给world的TurtleWorld和一个分配给bob的Turtle。打印bob产生类似的东西:

<TurtleWorld.Turtle object at 0x00FD1CD0>W

但是当我使用&#34; print(bob)&#34;我知道了吗?

<class 'TurtleWorld.Turtle'>

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

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

第47-48页是解释这些内容的地方

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

我通过解压缩&#34;沼泽&#34;来安装沼泽地。将文件夹放入文件夹&#34; libs&#34;,所以模块的目录现在看起来像这样:

D:\ Python34 \ Lib \ swampy-2.1.5

2 个答案:

答案 0 :(得分:1)

Turtle是一个新的Turtle对象来自的类。

您需要的是这样一个新对象。你必须打电话给#34;创建新对象的类:

bob   = Turtle()

答案 1 :(得分:1)

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

示例 -

bob   = Turtle()

或者

bob   = Turtle(world)