如何在 class 中导入 Turtle 模块?

How can I import the Turtle Module in a class?

我正在 python 中绘制分形树,这是我的方法(有效):

def fractal(length):
    if lenght < 1:
        return
    else:
        turtle.forward(length)
        turtle.left(30)
        fractal(length*0.67)
        turtle.right(60)
        fractal(length*0.67)
        turtle.left(30)
        turtle.backward(length)

现在我正尝试在 class 中实现它,但我不知道我应该如何使用 turtle 命令来实现它。

我是编码新手,所以请不要对我的代码评头论足。

我试过这样的事情:

class fractalTree():

from turtle import *

def __init__(self, angle, factor):
    self.angle = angle
    self.factor = factor

def fractal(self, length):
    if length < 1:
        return
    else:
        self.turtle.forward(length)
        self.turtle.left(self.angle)
        fractal(length * self.factor)
        self.turtle.right(self.angle * 2)
        fractal(length * self.factor)
        self.turtle.left(self.angle)
        self.turtle.backward(length)

test = fractalTree(14, 2/3)
test.fractal(100)

您可以通过多种方式解决此问题。您的自定义 class 可以 包含 一只乌龟:

from turtle import Screen, Turtle

class fractalTree():

    def __init__(self, angle, factor):
        self.angle = angle
        self.factor = factor
        self.turtle = Turtle()

    def fractal(self, length):
        if length < 1:
            return

        self.turtle.forward(length)
        self.turtle.left(self.angle)
        self.fractal(length * self.factor)
        self.turtle.right(self.angle * 2)
        self.fractal(length * self.factor)
        self.turtle.left(self.angle)
        self.turtle.backward(length)

screen = Screen()

screen.mode('Logo')  # being lazy, make the tree upright

test = fractalTree(30, 2 / 3)

screen.tracer(False)
test.fractal(100)
screen.tracer(True)

screen.exitonclick()

或者,您的自定义 class 可以 变成 乌龟:

class fractalTree(Turtle):

    def __init__(self, angle, factor):
        super().__init__()
        self.angle = angle
        self.factor = factor

    def fractal(self, length):
        if length < 1:
            return

        self.forward(length)
        self.left(self.angle)
        self.fractal(length * self.factor)
        self.right(self.angle * 2)
        self.fractal(length * self.factor)
        self.left(self.angle)
        self.backward(length)

或者,您也可以按照自己的习惯去做 class 只需使用乌龟即可。