Создание черепах с OOP в Python с графикой черепах - PullRequest
0 голосов
/ 25 января 2020

Я хочу взять это

t=turtle.Turtle()
t.color("white")
t.pensize(2)
t.shape("turtle")
t.speed(0)

И сделать много из них с OOP, поэтому я попытался, и это не сработало

class turtles:
    def __init__(self, color, pensize, shape, speed):
        self.self = turtle.Turtle()
        self.color = self.("color")
        self.pensize = self.(pensize)
        self.shape = self.("shape")
        self.speed = self.(speed)



t = turtles('blue', '2', 'turtle', '0')



Ответы [ 3 ]

0 голосов
/ 25 января 2020

Попробуйте:

import turtle
class turtles(turtle.Turtle):
    def __init__(self, color, pensize, shape, speed):
        super().__init__(shape)
        self.color(color)
        self.pensize(pensize)
        self.shape(shape)
        self.speed(speed)

t = turtles("blue", 2, "turtle", 0)
t.forward(10)

В первой строке кода я поставил «Черепашку» в скобках после имени класса, чтобы сообщить python, что класс наследуется от «Черепахи». Это означает, что он использует класс "Turtle" в качестве основы, этот метод обычно используется для расширения или изменения существующего класса.

Наследуя от "Turtle", переменная "self" в функциях объект, который наследуется от "черепахи". Это означает, что вы можете устанавливать графические параметры черепахи непосредственно через себя, а не через дополнительную переменную.

Подробнее о наследовании вы можете прочитать здесь: https://www.w3schools.com/python/python_inheritance.asp

0 голосов
/ 26 января 2020

Я считаю, что это должно делать то, что вы описываете:

from turtle import Screen, Turtle

class MyTurtle(Turtle):
    def __init__(self, color, pensize, shape, speed):
        super().__init__(shape)
        self.color(color)
        self.pensize(pensize)
        self.speed(speed)

yertle = MyTurtle('blue', 2, 'turtle', 'fast')
yertle.circle(100)

screen = Screen()
screen.exitonclick()

Вызов super().__init__() имеет решающее значение (и Python3 конкретизирует c, есть еще один способ сделать это в Python2) как Он устанавливает различные свойства, необходимые черепахе.

0 голосов
/ 25 января 2020

Без OOP вы используете объект Turtle, и когда вы помещаете его в класс, вы тоже должны. Попробуйте:

class turtles:
    def __init__(self, color, pensize, shape, speed):
        self.turtle = turtle.Turtle()
        self.turtle.color(color)
        self.turtle.pensize(pensize)
        self.turtle.shape(shape)
        self.turtle.speed(speed)

t = turtles("blue", 2, "turtle", 0)
...