2014-10-31 24 views
0

在我決定詢問之前,我在這裏瀏覽了幾個類似的問題。關於同樣的錯誤也有類似的問題,但它們不是同一類型的問題,並且沒有答案解決了我的問題。在Python中使用函數時獲取屬性錯誤

儘管如此,我得到一個Typeerror,它說'函數'對象沒有屬性'getitem'。這裏是我的代碼:

def Rectangle(width, height): 
    area = Rectangle[width] * Rectangle[height] 

a = Rectangle(5, 7) 
print(a.area) 

現在我知道有更容易的方法可以做到這一點,但面臨的挑戰是它使用的函數和類的事情。我想知道我在哪裏出錯了?

+0

我認爲你想要一個班級,而不是一個功能 – inspectorG4dget 2014-10-31 21:08:45

回答

1

您需要創建class。我將讓你開始:

class Rectangle: 
    def __init__(self, width, height): 
     self.width = width 
     self.height = height 

    @property 
    def area(self): 
     return self.width * self.height 

什麼你現在已經是一個功能。但是,當你的對象的每個實例應該有它自己的屬性時,你需要創建一個類型來存儲它們。

+0

這很有道理。謝謝。 atproperty是做什麼的? – 2014-10-31 21:13:39

+0

@HunterWatkins由於面積的計算取決於寬度和高度,我們不希望將其作爲常量值。 @屬性允許我們正常訪問它,同時仍然保持它與其他屬性的比例。 – 2014-10-31 21:15:58

+0

哇,這很有用!非常感謝。我在發佈之前寫了前兩行代碼,因爲我想我必須使用一個類,但是我發誓我只能使用一個函數。但是我錯了。再次感謝你的幫助! @AlexThornton – 2014-10-31 21:19:15