首页 > 解决方案 > 类中的 AttirbuteError(乌龟类继承)

问题描述

class Turtle_new(turtle.Turtle):
  def __init__(self):
    self.walks = 10000

  def go(self):
    r1 = random.randint(0,90)
    r2 = random.randint(270,360)
    if random.randint(0,1): 
      self.setheading(r1)
    else:
      self.setheading(r2)
    self.pensize(3)
    self.speed('fast')
    r4 = random.randint(0, 255)

self.setheading(r1)

属性错误发生在第 9 行。

'Turtle_new' 对象没有属性 '_orient'

这是错误。我已将“self.setheading”更改为“super()”,但出现错误。同样的错误发生在self.speed('fast) 将“_orient”更改为“_screen”。问题是什么?

标签: pythonclasspython-turtle

解决方案


您必须确保Turtle.__init__被调用,以便您的实例正确初始化。与某些语言不同,父初始化器不会自动调用;你必须明确。

from turtle import Turtle


class Turtle_new(Turtle):
    def __init__(self, kwargs):
         super().__init__(**kwargs)
         self.walks = 10000

    ...

Turtle.__init__(间接)初始化self._orient. 究竟如何与这个答案无关;如果您好奇,可以探索turtle模块。


推荐阅读