2014-11-02 52 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

相關問題