2013-02-17 104 views
0

所以我需要找到矩形区域。我必须在名为“CalcArea()”的Rectangle类中放入一个方法,该方法将width * height放大。我不知道如何做到这一点,我很失落,这本书并没有解释如何做到这一点。这里是我的代码:Python编程帮助初学者?

class Point(): 
    x = 0.0 
    y = 0.0 

    def __init__(self, x, y): 
     self.x = x 
     self.y = y 
     print("Point Constructor") 

    def ToString(self): 
     return "{X:" + str(self.x) + ",Y:" + str(self.y) + "}" 

class Ellipse(Point): 
    radiusV = 0.0 
    radiusH = 0.0 

    def __init__(self, x, y, radiusV, radiusH): 
     super().__init__(x,y) 
     self.radiusV = radiusV 
     self.radiusH = radiusH 
     print("Ellipse Constructor") 

    def ToString(self): 
     return super().ToString() + \ 
       ",{Radius: Vertical = " + str(self.radiusV) + ", Radius: Horizontal = " +  str(self.radiusH) + "}" 
p = Point(50,50) 
print(p.ToString()) 
e = Ellipse(80,80,60,80) 
print(e.ToString()) 

class Size(): 
    width = 0.0 
    height = 0.0 

    def __init__(self, width, height): 
     self.width = width 
     self.height = height 
     print ("Size Constructor") 

    def ToString(self): 
     return "{Width = " + str(self.width) + \ 
       ", Height = " + str(self.height) + "}" 

class Rectangle(Point, Size): 
    area = 0.0 

    def __init__(self, x, y, width, height): 
     Point.__init__(self,x,y) 
     Size.__init__(self,width,height) 
     print("Rectangle Constructor") 


    def ToString(self): 
     return Point.ToString(self) + "," + Size.ToString(self) + 
s = Size (80,70) 
print(s.ToString()) 

r = Rectangle(200,250,40,50) 
print(r.ToString()) 
+2

您的代码被错误地缩进。你能纠正它吗?不要忽略空格,更好的办法就是粘贴代码。 – sidi 2013-02-17 20:30:42

+1

@sidi除非它有制表符而不是空格,然后在粘贴之前修复它只是有空格。 – 2013-02-17 20:32:32

+0

老实说,在编辑器中,它很好,但网站在取代码时遇到了很大的麻烦,所以我不得不手动在每一行中放置空格......主要讨厌哈哈。但任何人都可以帮助解决实际问题? – 2013-02-17 20:35:28

回答

2

在你Rectangle类使用下面的方法

def calcArea(self): 
    return self.width * self.height 

打印的区域只需拨打 print mRectangle.calcArea()

其中mRectangleRectangle类的一个实例。

self.widthself.height提供给你,因为从SizeRectangle继承和Size有实例变量widthheight在其构造适当设置。这些值可供您使用,因为RectangleSize的子类。

此外,您的width = 0height = 0大小类可能不会完全按照您的想法进行。他们是在Python静态或类变量和self.widthself.height这里完全不同的一个例子来说明

>>> class MyClass(): 
...  a = 0 
...  def __init__(self): 
...   self.a = 5 
...  def echo(self): 
...   print MyClass.a, self.a 
... 
>>> instance = MyClass() 
>>> instance.echo() 
0 5 
>>> instance.a 
5 
>>> MyClass.a 
0 
>>> 

在Python访问类或静态变量的语法ClassName.Variable,可以在不创建的对象来访问那个班。作为实例变量,只能用类的实例调用。