2013-11-26 54 views
1
class GeometricObject: 
    def __init__(self,color = 'green',filled='true'): 
     self.__color=color 
     self.__filled=filled 
    def getColor(self): 
     return self.__color 
    def setColor(self,color): 
     self.__color=color 
    def isFilled(self): 
     return self.__filled 
    def setFilled(self,filled): 
     self.__filled=filled 
    def __str__(self): 
     return "Color: " + self.__color + " Filled: " + str(self.__filled) 

這是三角類:__init __()1至3個位置參數需要但4分別給予

from GeometricObject import GeometricObject 

    class Triangle(GeometricObject): 
     def __int__(self,side1=1.0,side2=1.0,side3=1.0): 
      super().__init__() 
      self.__side1=side1 
      self.__side2=side2 
      self.__side3=side3 

     def getPerimeter(self): 
      return self.__side1 + self.__side2 + self.__side3 

     def __str__(self): 
      return super().__str__()+" side 1: "+str(self.__side1)+" side 2: "+str(self.__side2)+" side 3: "+str(self.__side3) 

     from triangle import Triangle 
     from GeometricObject import GeometricObject 

     def main(): 
      side1=int(input("Enter first side: ")) 
      side2=int(input("Enter second side: ")) 
      side3=int(input("Enter third side: ")) 
      t1=Triangle(side1,side2,side3) 
      print(t1.getColor()) 
      print(t1.getPerimeter()) 
      print(t1.__str__()) 
     main() 

當我創建在主函數的三角形對象T1中的誤差是發生: 初始化()從1到3的位置參數,但4分別給予需要...

我知道有關於這樣類似的錯誤,其他職位,但如果你提供的參數不夠他們中的很多人與一個人的那提供了provi太多的爭論並沒有回答我的問題。

+0

[TypeError:\ _ \ _ init \ _ \ _()只需要1個參數(給定3)pyXML](http://stackoverflow.com/questions/11905148/typeerror-init-takes-exactly- 1-argument-3-given-pyxml) – Johnsyweb

回答

4

您需要將__int__更改爲__init__,並且只能通過super()self

class Triangle(GeometricObject): 
     def __init__(self,side1=1.0,side2=1.0,side3=1.0): 
      #The correct alternative to below is: 
      #super(GeometricObject, self).__init__() 

      GeometricObject.__init__(self) 
      self.__side1=side1 
      self.__side2=side2 
      self.__side3=side3 

要回答你的第二個問題,這裏有一個例子:

class A(object): 
    def __init__(self, color = 'blue'): 
     self.color = color 

    def __str__(self): 
     return str(self.color) 

class B(A): 
    def __init__(self, name = 'steve'): 
     A.__init__(self)  
     self.name = name 

    def __str__(self): 
     #alternatively: return super(B, self).__str__() + " " + str(self.name) 
     return A.__str__(self) + " " + str(self.name) 

打印"blue steve"

+0

這似乎沒有工作。所以唯一的改變是super().__ init __(self)?在我們在課堂上做的例子中,我們不必提供那個自我參數,這就是爲什麼我會感到困惑。 –

+0

您還需要將'__int__'更改爲'__init__'。再次,我也會使用'GeometricObject .__ init __(self)',但那不應該。 –

+0

:P我沒看到。 Thankyou我的眼睛無法在受挫後捕捉到這些東西.. –

1

三角的初始化功能被誤拼爲__int__
def __int__(self,side1=1.0,side2=1.0,side3=1.0):

變化:
def __init__(self,side1=1.0,side2=1.0,side3=1.0):

適合我!

+0

嘿,我現在得到了那部分。但我也只是得到了一個錯誤,因爲我在我的最後一個程序中這樣做了,現在它不會讓我這部分:'code'return super().__ str __()+「side 1:」+ str( self .__ side1)+「side 2:」+ str(self .__ side2)+「side 3:」+ str(self .__ side3)'code'它給了我這個錯誤:無法將'Triangle'對象隱式轉換爲str –

+0

@HughCraig請參閱我的編輯示例。 –

相關問題