1

私はPythonを学んでいます。現時点では、作曲でやりたいことができますが、継承を使って同じことをしようとするとエラーになります。これが私のコードです。私は基本的に色付きの正方形のクラスを作ろうとしています。

from graphics import *

class Block(Rectangle):
    def __init__(self, corner, colour):
        self.corner = corner
        self.colour = colour
        self.x1 = self.corner.getX() * 30
        self.y1 = self.corner.getY() * 30
        self.x2 = self.x1 + 30
        self.y2 = self.y1 + 30
        self.point1 = Point(self.x1, self.y1)
        self.point2 = Point(self.x2, self. y2)
        Rectangle.__init__(self, self.point1, self.point2)


    def draw(self, window):
        self.window = window
        self.Rectangle.draw(self.window)


new_win = GraphWin("thingy", 700, 500)
corner = Point(1, 1)
square1 = Block(corner, 'red')
square1.draw(new_win)

new_win.mainloop()

私が得るエラーは

File "F:\Python\4\4_3.py", line 24, in draw
self.draw(self.window)

エラーは無期限に繰り返されます。

これが私が作曲でそれをするときに私が望むことをするコードです:

from graphics import *

class Block():
    def __init__(self, corner, colour):
        self.corner = corner
        self.colour = colour
        self.x1 = self.corner.getX() * 30
        self.y1 = self.corner.getY() * 30
        self.x2 = self.x1 + 30
        self.y2 = self.y1 + 30
        self.point1 = Point(self.x1, self.y1)
        self.point2 = Point(self.x2, self. y2)
        self.Rectangle = Rectangle(self.point1, self.point2)

    def draw(self, window):
        self.window = window
        self.Rectangle.draw(self.window)
        self.Rectangle.setFill(self.colour)


new_win = GraphWin("thingy", 150, 150)
corner = Point(1, 1)
square1 = Block(corner, 'red')
square1.draw(new_win)

new_win.mainloop()
4

2 に答える 2

0

Python2.7の簡単なコードは次のとおりです。

BaseClassName.__init__(self, args)

于 2013-03-22T22:47:47.313 に答える
0
from graphics import *

class Block(Rectangle):
    def __init__(self, corner, colour):
        self.corner = corner
        self.colour = colour
        self.x1 = self.corner.getX() * 30
        self.y1 = self.corner.getY() * 30
        self.x2 = self.x1 + 30
        self.y2 = self.y1 + 30
        self.point1 = Point(self.x1, self.y1)
        self.point2 = Point(self.x2, self. y2)

        Rectangle.__init__(self, self.point1, self.point2)


    def draw(self, window):
        self.window = window
        Rectangle.draw(self, self.window)
        # instead of self.Rectangle.draw(self.window)

相続の場合はありませんself.Rectangle

于 2013-03-22T22:59:40.460 に答える