Я получаю сообщение об ошибке атрибута: объект Point не имеет атрибута _x - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь исправить свой код, чтобы передавать значения через классы, потому что этого хочет мой учитель.Я получаю ошибку атрибута, и я не уверен, что я сделал неправильно, потому что класс Point работает сам по себе.Функция self.create_oval также не будет работать без двух аргументов.

#Impot libraries that you need
import math
from Tkinter import *
from random import randint

# the 2D point class
class Point(object):

    #Constructor
    def __init__(self, x=0.0, y=0.0):
        self.x = self.x
        self.y = self.y

    def __str__(self):
        #returns the point in string format, also its known as the "magic function"
        return "({},{})".format(self.x, self.y)

    #Accesser (Getter)
    @property
    def x(self):
        return self._x

    #Setter (Mutator)
    @x.setter
    def x(self, value):
        self._x = value

    @property
    def y(self):
        return self._y

    @y.setter
    def y(self, value):
        self._y = value

    #Now we need to make a function that finds the distance between 2 points
    def dist(self, otherPoint):
        theDistance = math.sqrt((otherPoint.x - self.x)**2 + (otherPoint.y - self.y)**2)
        return theDistance

    #Now we need to make a function that finds the midpoint between 2 points
    def midpt(self, otherPoint):
        theMidpointx = (self.x + otherPoint.x)/2
        theMidpointy = (self.y + otherPoint.y)/2
        return Point(theMidpointx, theMidpointy)



# the coordinate system class: (0,0) is in the top-left corner
# inherits from the Canvas class of Tkinter
class CoordinateSystem(Canvas):

    #Make some class variables
    #We need a list to get colors from
    colors= [ "black", "red", "green", "blue", "cyan", "yellow", "magenta" ]
    #We have to know how big we want the point
    pointRadius = 0

    #Construct Your Class
    def __init__(self, master):
        Canvas.__init__(self, master, bg = "white")
        self.pack(fill = BOTH, expand = 1)

    #get those random points!!!  
    def plotPoints(self, n):   
        for i in range(n):
            x = randint(0, WIDTH - 1)
            y = randint(0, HEIGHT - 1)
            thePoints = Point(x, y)
            plot(thePoints)

    #Plot those points
    def plot(self, c):
        #This chooses a random color for the point
        color = colors[randint(0, len(colors) - 1)]
        color2 = colors[randint(0, len(colors) - 1)]
        #This actually graphs the point
        self.create_oval(x, y, x + pointRadius * 2, y + pointRadius * 2, outline = color, fill = color2)


##########################################################
# ***DO NOT MODIFY OR REMOVE ANYTHING BELOW THIS POINT!***
# the default size of the canvas is 800x800
WIDTH = 800
HEIGHT = 800
# the number of points to plot
NUM_POINTS = 5000

# create the window
window = Tk()
window.geometry("{}x{}".format(WIDTH, HEIGHT))
window.title("2D Points...Plotted")
# create the coordinate system as a Tkinter canvas inside the window
s = CoordinateSystem(window)
# plot some random points
s.plotPoints(NUM_POINTS)
# wait for the window to close
window.mainloop()

Я не знаю, что означает эта вещь, добавляя больше деталей, поэтому я просто хочу добавить кучу случайных вещей и надеюсь, что это сработает.все мы видим, что мы не знаем, как мы работаем с кем-то, кто мы работаем с кем-то, кто делает это, или что мы делаем это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...