簡體   English   中英

python“class”一詞promblem

[英]python “class” word promblem

問題是:

編寫一個名為Car的類,它具有以下數據屬性:

__year_model (適用於汽車的年份型號)

__make (用於汽車的汽車制造)

__speed (對於汽車的當前速度)

Car類應該有一個__init__方法,它接受汽車的年份模型並作為參數。 它還應該為__speed數據屬性賦值0。

該類還應具有以下方法:

•加速加速方法應在每次調用時將速度數據屬性加5。

•制動每次調用時,制動方法應從速度數據屬性中減去5。

•get_speed get_speed方法應返回當前速度

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

我收到錯誤TypeError: __init__() missing 3 required positional arguments: 'year', 'make', and 'speed'

我的代碼:

#create class called car

class Car:
    def __init__(self,year,make,speed):
        self.__year_model=year
        self.__make=make
        self.__speed=0

    #set the arguments for speed,year, and make
    def set_year_model(self,year):
        self.__year_model=year

    def set_make(self,make):
        self.__make=make

    def set_speed(self,speed):
        self.__speed=0

    #the returns for speed, year, and make
    def get_year_model(self):
        return self.__year_model

    def get_make(self):
        return self.__make

    def get_speed(self):
        return self.__speed


    #methods
    def accelerate(self):
        self.speed +=5

    def brake(self):
        self.speed-=5

    def get_speed(self):
        return self.speed

#actuall program
#create car object
def main():
    my_car=Car()

    year=print(input('car year: '))
    make=print(input('car make: '))
    speed= print('Current speed is 0')

    #accelerate 5 times

    my_car.accelerate()
    print('My current speed:',my_car.get_speed())
    my_car.accelerate()
    print('My current speed:',my_car.get_speed())
    my_car.accelerate()
    print('My current speed:',my_car.get_speed())
    my_car.accelerate()
    print('My current speed:',my_car.get_speed())
    my_car.accelerate()
    print('My current speed:',my_car.get_speed())

    #brake five times
    my_car.brake()
    print('My current speed after brake:',my_car.get_speed())
    my_car.brake()
    print('My current speed after brake:',my_car.get_speed())
    my_car.brake()
    print('My current speed after brake:',my_car.get_speed())
    my_car.brake()
    print('My current speed after brake:',my_car.get_speed())
    my_car.brake()
    print('My current speed after brake:',my_car.get_speed())

main()

Car類的__init__接受三個你沒有傳遞的參數。

year=input('car year: '))
make=input('car make: '))
speed=0
print'Current speed is', speed
#actuall program
#create car object
def main():
my_car=Car(year, make, speed)

input之前不需要那些print語句。 我不確定你要跟它做什么。 speed= print('Current speed is 0')也不正確。

此函數始終將速度設置回零,如果這是您想要的,則無需傳遞參數speed 與init相同的是,如果您還沒有使用它,則無需傳遞參數。

def set_speed(self,speed):
    self.__speed=0

錯誤消息告訴您確切的錯誤。 您已將Car定義為需要三個參數:

def __init__(self, year, make, speed):

但是當你創建一個時,你不會傳遞任何一個:

my_car = Car()

看到? 括號中沒有任何內容。 顯然這需要:

my_car = Car(year, make, speed)

當然,你不能這樣做,因為你還沒有要求這些項目。 因此, 從用戶獲取該信息創建my_car

class Car(object):#made class called car def init (self,model,make):self .__ model = model self .__ make = make self .__ speed = 0 def accelerated(self):self .__ speed + = 5 #increase 5速def剎車(自我):自我.__速度 - = 5#降低5速

def get_speed(self):
return self.__speed #return speed

wr_handle = open("output_04.txt", "w+")
carObject = Car( 1984,"Chevron")
wr_handle.write("Car is accelerating: \n")
print("Car is accelerating:") #accelerate 5 times
for p in range(0, 5):
carObject.accelerate()
my_car_speed = carObject.get_speed()
wr_handle.write("The current speed is: %d \n"% my_car_speed)
print("The current speed is: %d "% my_car_speed)

wr_handle.write("Car is braking: \n")
print("Car is braking: ") #brake 5 times
for p in range(0,5):
carObject.brake()
my_car_speed = carObject.get_speed()
wr_handle.write("The current speed is: %d \n"% my_car_speed)
print("The current speed is: %d "% my_car_speed)

wr_handle.write("Bye! \n")
print("Bye! ")
wr_handle.close()

class Car(object):#made class called car def init (self,model,make):self .__ model = model self .__ make = make self .__ speed = 0 def accelerated(self):self .__ speed + = 5 #increase 5速

def brake(self):
    self.__speed -= 5 #decrease 5 speed

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM