2016-03-18 66 views
0

在Python中我第一次嘗試類。當我使用這段代碼時,我收到第15行的錯誤'這個構造不帶參數'。有人能告訴我什麼是問題嗎?這個Constructer不帶參數

class Triangle: 
    def _init_(self,h,b): 
     self.h = h 
     self.b = b 
    author = 'No one has claimed this rectangle yet' 
    description = 'None' 
    def area(self): 
     return (self.h * self.b)/2 
    def description(self,text): 
     self.description = text 
    def author(self,text): 
     self.author = text 

fred = Triangle(4,5) 
print fred.area() 
+1

兩邊用雙下劃線初始化,而不僅僅是一個:'__init__',和不是'_init_' – pixis

回答

0

你的錯誤是在初始化函數。它應該有兩個下劃線之前和之後像這樣__init__()

下面是正確的代碼:

class Triangle: 
    def __init__(self,h,b): 
     self.h = h 
     self.b = b 
    author = 'No one has claimed this rectangle yet' 
    description = 'None' 
    def area(self): 
     return (self.h * self.b)/2 
    def description(self,text): 
     self.description = text 
    def author(self,text): 
     self.author = text 

fred = Triangle(4,5) 
print fred.area() 
+0

謝謝,這在我使用的教程中並不明顯 – Midataur

2

您應該使用雙下劃線__表示__init__

def __init__(self, h, b): 
2

您已經定義構造函數_init_當它應該被定義爲__init__(注意雙下劃線)。 Python沒有看到你的__init__(因爲它是錯誤的),只是假設一個默認的構造函數(不帶參數)。

0

我認爲這個問題是隻是類構造函數的語法,初始化需要兩個下劃線之前和之後。

所以你類成爲

class Triangle: 
    def __init__(self,h,b): 
     self.h = h 
     self.b = b 

    # rest of the class code 

此鏈接有下劃線的蟒蛇相關的一些信息: https://shahriar.svbtle.com/underscores-in-python