2014-11-02 55 views
0

我不确定如何首先解决缺少所需位置参数的这个问题,但在此之后,我尝试为n,s,x设置可更改的默认值,年。我很抱歉,如果这个问题似乎很愚蠢,但我是新的,并感谢任何和所有的帮助。我不知道如何包含所需的位置参数

import math 

class RegularPolygon: 

    def __init__(self, n, s, x, y): 
     self.n = 3 
     self.side = 1 
     self.x = 0 
     self.y = 0 

    def getN(self, n): 
     self.n = n 
     return self.n 

    def getSide(self, s): 
     self.side = s 
     return self.side 

    def getX(self, x): 
     self.x = x 
     return self.x 

    def getY(self, y): 
     self.y = y 
     return self.y 

    def getPerimeter(self, n , s): 
     self.perimeter = n * s 
     return self.perimeter 

    def getArea(self, n, s): 
     self.area = (n * math.pow(s, 2))/(4 * math.tan(math.pi/n)) 
     return self.area 

错误:

Traceback (most recent call last): 
File "C:\Pythonstuff\Ch.7\chapter07_unittests.py", line 7, in setUp 
self.poly1 = RegularPolygon() 
TypeError: __init__() missing 4 required positional arguments: 'n', 's', 'x', and 'y' 
+0

为什么所有'get'方法都会设置您的对象的属性? – khelwood 2014-11-02 20:51:32

+0

我不知道,我想知道同样的事情。这些名称是我需要从教师提供的测试仪中使用的名称,以便它们匹配。 – Ethan 2014-11-02 20:55:04

回答

0

创建RegularPolygon对象时,您需要通过值:

c = RegularPolygon(100, 100, 100, 100) 

现在你可能会写:

c = RegularPolygon() 

在这有课四个立场争论,你现在没有传球。由于这些参数都不具有默认值,因此它们都是必需的,所以在这种情况下您需要指定正好四个值。

+0

我不是直接运行这个,我正在使用给它赋值的测试器。测试人员会调用像这样的RegularPolygon(100,100,100,100),但它告诉我上述错误。 – Ethan 2014-11-02 21:07:45

+0

@Ehan:在这种情况下,你能否包含异常的追溯?调用者应该提供了参数,但显然没有。 – 2014-11-02 21:08:33

+0

我现在已经包含了它,并且它似乎在我的代码中与第7行相关。 – Ethan 2014-11-02 21:14:00

相关问题