2015-12-02 76 views
0

我正在努力在腦海中創建一個帶有房地產代理的程序。在這個計劃中,我試圖用一切基本參數來涵蓋出租房屋的各個方面。但是我有一些錯誤。在Python中繼承存在錯誤

class Apartment: 


    def __init__(self, aptNumber, address, bedrooms, baths): 
     self._aptNumber = aptNumber 
     self._address = address 
     self._bedrooms = int(bedrooms) 
     self._baths = float(baths) 

    def _securiyDep(self): 
     securityDeposit = 330(bedrooms) 

    def _rent(self): 
     rent = 250(bedrooms) + 150(bathrooms)+200 

    def _renter(self): 
     renter = "vacant" 

    def setSecDep(self, deposit): 
     self._deposit = 1000 

    def setRent(self, rentMoney): 
     self._rentMoney = 800 

    def setRenter(self, renter): 
     self._renter = "Vacant" 

    def getData(self, Data): 
     self._Data = Data 

    def isVacant(self, vacancy): 
     self._vacancy = "True" or "False" 


     def __repr__(self): 
      s = self._aptNumber+ " located at " + str(self._address) + " is rented at" + self._rent 
      s+= " and has a security deposit = " + self._deposit + " and is = " + self._vacancy 
      return s 





# Test code for the Apartment Class 
if __name__ == "__main__": 
    apts = [] 
    apts.append(Apartment("10C", "107 E. Main", 3, 1.5)) 
    apts.append(Apartment("14B", "109 E. Main", 4, 2)) 
    apts.append(Apartment("13", "2207 W. Broadway", "5", "2.5")) 

    for apt in apts: 
     print(apt) 
    print() 

    apts[0].setRent("1245") 
    apts[0].setRenter("Rocky Quartzite") 
    apts[1].setSecDep("1000") 
    apts[1].setRenter("Millie Milton") 

    print(apts[0].getData()) 
    print() 

    for apt in apts: 
     if not apt.isVacant(): 
      print(apt) 
    print() 

    apts[0].setRenter("") 
    print(apts[0]) 

我有錯誤

print(apts[0].getData()) 
<__main__.Apartment object at 0x0000000003124208> 
TypeError: getData() missing 1 required positional argument: 'Data' 
<__main__.Apartment object at 0x0000000003124240> 

可有人請與錯誤的幫助?

+0

除非它被錯誤地複製,否則它應該是'def __init __(',而不是'def _init __('。它可能使用默認的構造函數,它不會帶任何參數。 – Nathaniel

+0

另外,'rent = 250(bedrooms)+ 150(浴室)+ 200'會拋出其他錯誤,你可能想要t o使用'租金= 250 *臥室+ 150 *浴室+ 200' ' –

+0

謝謝。那是一個錯字。現在我有錯誤 打印(APTS [0] .getData()) <__主__公寓對象在0x0000000003124208。> 類型錯誤:的getData()缺少1所需位置參數: '數據' <__主__公寓對象在0x0000000003124240 > –

回答

0

您可以撥打電話getData,並在第60行沒有參數:print(apts[0].getData())。在您的定義中,它需要一個名爲Data的參數。

+0

那我該如何改正它? –

+0

目前尚不清楚你想要做什麼。你想在'self._Data'中放什麼?正如@wastl所建議的那樣,'getData'應該叫做'setData',你應該用它來把'self._Data'中的任何東西都放進去。你可以創建另一個'getData'方法來返回'self._Data',你可以在'self._Data'中放置一些東西后使用它。 – Imran

0

您定義getData取兩個參數,即self這是一個refernce你所操作的實例,這是「自動」提供,第二個參數是Data

def getData(self, Data): 
    self._Data = Data 

但當你叫getData你不提供第二個參數Data

apts[0].getData() 

這樣的解釋告訴你,1個所需參數丟失,而你的情況爲Data

因爲你的情況getData實際上是設置Data變量,倒不如稱之爲setData

如果你想以檢索的Data可變吸氣將不得不looke這樣的事情

def getData(self): 
    return self._Data 
+0

但該程序需要getData。如果我將其更改爲setData,則不起作用。 –

+0

看到最後的列表,這是你將如何實現'_Data'變量的getter。 – wastl

+0

現在我有錯誤返回self._Data AttributeError:'Apartment'對象沒有屬性'_Data' –