「Turbo Graphics」(安齋利洋・伊吹龍著;1987年)にはタートルの動きに対する面白い命令がある。それがreverseである。これはタートルの右回転(rt)と左回転(lt)の役割を反転させる機能を持っている。Pythonのタートル・グラフィックスにはこの機能がない。Python上でこの機能を関数として定義してもよいが折角なのでreverseをタートルクラスの一つメソッドとして追加したMyTurtleクラスを作ることにする。
MyTurtleクラスは元々のモジュール(turtle)で定義されているTurtleクラスを継承して作る。クラスの定義は以下のようなものである:
import turtle
class MyTurtle(turtle.Turtle):
def __init__(self):
turtle.Turtle.__init__(self)
self.phase = 1
def rt(self, angle):
self.angle = angle*self.phase
turtle.Turtle.rt(self, self.angle)
def lt(self, angle):
self.angle = angle*self.phase
turtle.Turtle.lt(self, self.angle)
def rev(self):
return self.phase
def reverse(self):
self.phase=self.phase*-1
def clone(self):
temp=turtle.Turtle.clone(self)
temp.phase = self.phase
return temp
このクラスではreverseの導入によって影響を受けるturtleモジュールの中のメッソドの書き換えは最小限に止めてある。