2016-09-19 51 views
1

這是問題;用下面的數據屬性不確定的解決方案是正確的python類

__year_model 
__make 
__speed 

創建一個汽車類的類應該有一個__init__方法接受這款車的年份型號 並作爲參數。該值應分配給對象__year_model__make attributes。應該分配0到__speed數據屬性

它還應該有下面的方法:

加速:加速應該添加5〜每次 被稱爲時間數據屬性的速度。

制動:此方法應該從速度減去5

get_speed:本應顯示當前速度

接着,設計,創建一個汽車對象中的程序,然後調用加速方法 五倍。每次調用加速方法後,獲取當前車輛的速度並顯示它。然後調用制動方法五次。在每次調用制動方法後,獲取當前汽車的速度並顯示它。

class Car: 
    def __init__(self,year_model,make,speed): 
     self.year_mode = year_model 
     self.make = make 
     self.speed = 0 

    def accelerate(self,accelerate): 
     self.accelerate = accelerate 
     speed = 0 
     for x in range(5): 
      speed = speed + 5 
      print speed 

    def brake(self,brake): 
     self.brake = brake 
     speed = 0 
     for x in range(5): 
      brake = brake - 5 
      print brake 

    def get_speed(self): 
     return self.speed 


test = Car(2006,'Honda',100) 

我知道測試是實例。這也是對象嗎? 謝謝

回答

2

是的,test是一個對象,即的一個實例是的一個對象。

你的班級需要一些工作。根據規範,speed不應該被傳遞給__init__()。刪除並在__init__()中初始化self.__speed0

accelerate()brake()不應該接受參數 - 每方法應當通過5增加電流速度,或由5減少的速度因此,這些方法不要求(除了其他self)任何參數。

所以accelerate()應該是這樣的:

def accelerate(self): 
    self.__speed += 5 # shorthand for self.speed = self.speed + 5 

它只是通過在每次調用時5升速。請注意,使用self是爲了使成員__speed遞增,而不是一些臨時的本地變量。您可以爲brake()做同樣的事情。

除此之外,添加您的任務指定的測試:每次調用後打印速度5次的呼叫accelerate。對於brake方法同樣如此。輸出是否與你所期望的一致?

測試是這樣的:

car = Car(2006,'Honda') 

for i in range(5): 
    car.accelerate() 
    print(car.get_speed()) 

for i in range(5): 
    car.brake() 
    print(car.get_speed()) 

哦,並命名您的會員按照規範:__speed,不speed等。

+0

你是說,每次我叫加速是應該由5 第1次去了其所謂的5 第二次其所謂的10 或者它應該只是打印出來的一切作爲一次? – JDDoe

+0

@JDDoe:我就是這樣讀的:初速度爲0,'加速()'每調用一次,速度增加5倍。所以第二次調用它後,速度將是10.在第三次後,15等 – mhawke

+0

我試圖張貼在一個可讀的格式,但它不會如預期 http://pastebin.com/STwgj5pM – JDDoe

相關問題