Почему черепаха не рисует Python 3 в классе Line? - PullRequest
0 голосов
/ 20 января 2020

Я пишу класс Line, чтобы нарисовать линию с учетом координат двух точек. Однако когда я запускаю эту программу, черепаха ничего не рисует. Есть ли ошибка в том, как я определил свой метод Draw () или вызвал его? Я не очень знаком с Python3 и классами. Вот мой код:

from turtle import *
g = Turtle()

class Line():
    def __init__(self, x1, y1, x2, y2):
        self.X1 = x1
        self.Y1 = y1
        self.X2 = x2
        self.Y2 = y2
        self.Draw(x1, y1, x2, y2)

    def getX1():
        return self.X1

    def getY1():
        return self.Y1

    def getX2():
        return self.X2

    def getY2():
        return self.Y2

    def Draw(self, x1, y1, x2, y2):
        g.penup()
        g.goto(x1, y1)
        g.pendown()
        g.goto(x2, y2)

def main():
    theLine = Line(0, 0, 100, 100)
    theLine.Draw()

1 Ответ

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

Функция Draw, которую вы определили, принимает 5 аргументов (self, x1, y1, x2, y2). Но вам нужно получить информацию о координатах из объекта Line.

Вот почему существует параметр self. Параметр self является самим объектом, поэтому вместо использования x1, y1, x2 и y2 вы хотите использовать значения, хранящиеся в объекте, например: self.x1, self.y1, self.x2 и self.y2. после того, как вы измените их, вы также должны удалить ненужные аргументы функции (все, кроме self)

Окончательный код

def Draw(self): # Removed the arguments
    g.penup()
    g.goto(self.X1, self.Y1) # Go to the starting point stored in the object
    g.pendown()
    g.goto(self.X2, self.Y2) # Go to the endpoint stored in the object

...