2011-05-04 47 views
0

我必須寫一個類在類可以addShapes將一個類放在列表中。蟒蛇

繼承人的I類必須做

class Drawing(Circle, Square): 
    list = [] 

    def addShape(self, theShape, colour, x, y, side): 
     self.list += [self.theShape(colour, x, y, side)] 

    def display(self): 
     return self.list 

    def move(self): 

    def changeColour(self, newColour): 

    def totalArea(self): 
     return 

形狀類:

class Shape(Point): 

    def __init__(self, colour, x, y): 
      Point.__init__(self, x, y) 
      self.colour = colour 
      self.centrePoint = (x,y) 

    def centre(self): 
     return self.centrePoint 

    def movePoint(self, newX, newY): 
      Point.move(self, newX, newY) 
      self.centrePoint = (self.x, self.y) 


class Circle(Shape): 

    def __init__(self, colour, x, y, radius): 
     Shape.__init__(self, colour, x, y) 
     self.radius = radius 

    def getArea(self): 
     return math.pi * (self.radius * self.radius) 

加上一個正方形類。

如何將顏色等加上形狀的類名到列表中,然後才能使用。 或最好的做法是什麼。

感謝

+1

'addShapes'是什麼意思?你只是想要一個'Shape'實例列表嗎?你需要知道實例是什麼形狀,或者只需調用'draw()',讓實例知道該怎麼做? – unholysampler 2011-05-04 16:03:17

+2

請處理您的問題的清晰度。這將有助於獲得良好的答案。 – NPE 2011-05-04 16:15:38

+0

ive添加了我必須做的類 – Tom 2011-05-04 16:58:34

回答

0

提供我正確理解你的問題,你可以簡單地把你的類的實例到列表:

l = [Circle(BLACK, 0.0, 0.0, 12.0), Circle(GREEN, 10.0, 0.0, 3.0), Square(YELLOW, 5.0, 5.0, 1.0)] 
1

我不認爲這是完全清楚你想要什麼完成,但在這裏就是我想:

  1. 你應該向我們展示你迄今爲止
  2. 你笑什麼寫ULD將其標記爲功課,如果它是功課
  3. 您可以添加任何東西在Python的列表,所以只要給它一個鏡頭:

    myList中= [circle_instance,CircleClass,「一些顏色」,1337]

請注意,我可以有我的形狀,類,文本,整數,無論​​我想要在列表中的實例。

0

我不認爲你想要子類和圓形和方形。試試這個:

class Drawing(object): 
    list = [] 

    def addShape(self, theShape, colour, x, y, side): 
     self.list += [theShape(colour, x, y, side)] 

    def display(self): 
     return self.list 

    def move(self): 

    def changeColour(self, newColour): 

    def totalArea(self): 
     return 

,然後你可以做這樣的事情:

d = Drawing() 
d.addShape(Circle, c1, 0, 0, 5) 

如果你想查找基於名稱的顏色(字符串),這將是可行的,但會有幾種不同的策略。