2011-05-04 49 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) 

如果你想查找基于名称的颜色(字符串),这将是可行的,但会有几种不同的策略。