Создайте подкласс Rectangle в графике Python Zelle - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать подкласс Rectangle в графической библиотеке Zelle в Python:

from graphics import*
win =GraphWin('tower of haoi',1000,600)
class DISC(Rectangle):
    def __init__(self,pt1,pt2,color):
        self.pt1=pt1
        self.pt2=pt2
        self.color=color
    def createdisc(self):
        self.setFill(self.color)
        self.draw(win)

disc1=DISC(Point(0,0),Point(28,10),color_rgb(230, 255, 245))
disc1.createdisc()
win.getMouse()
win.close()

Но созданный объект не принимает никаких методов и выдает ошибку:

AttributeError: 'DISC' object has no attribute 'config'

1 Ответ

0 голосов
/ 01 мая 2019

Проблема в том, что DISC.__init__() не вызывает метод __init__() своего суперкласса:

from graphics import *

class DISC(Rectangle):
    def __init__(self, p1, p2, color):
        super().__init__(p1, p2)
        self.color = color

    def createdisc(self):
        self.setFill(self.color)
        self.draw(win)

win = GraphWin('Tower of Hanoi', 1000, 600)

disc1 = DISC(Point(0, 0), Point(28, 10), color_rgb(230, 255, 245))
disc1.createdisc()

win.getMouse()
win.close()

Вам не нужно хранить две точки в вашем объекте, поскольку выуже хранит их, потому что ваш объект - Rectangle.

...