Python 我的课程和程序在一起运行时遇到问题

Python 我的课程和程序在一起运行时遇到问题,python,python-3.x,Python,Python 3.x,回溯(最近一次呼叫最后一次): 文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”,第36行,在 main() 文件“H:\Documents\itp100 softwaredesign\Assingments\Project2\run\u car.py”,第23行,主目录 我的车加速 文件“H:\Documents\itp100 softwaredesign\Assingments\Project2\

回溯(最近一次呼叫最后一次): 文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”,第36行,在 main() 文件“H:\Documents\itp100 softwaredesign\Assingments\Project2\run\u car.py”,第23行,主目录 我的车加速 文件“H:\Documents\itp100 softwaredesign\Assingments\Project2\car.py”,第28行,在accelerate中 速度+5 TypeError:不支持+:“Car”和“int”的操作数类型

这就是我得到的错误。 这是我的代码和我的类。 我需要用加速法将速度增加5倍 然后用制动法从速度上取-5。 任何建议都会有帮助的。谢谢

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

    def __set_year(self, year):
        self.__year_model = year

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

    def __set_speed(self, speed):
        self.__speed 

    def __get_year(year):
        return self.__year_model

    def __get_model(model):
        return self.__make

    def __get_speed(accelerate):     
        return self.__speed


    #methods
    def accelerate(speed):
        return (speed + 5)


    def brake(speed):
        return (speed - 5)


import car
import time

def main():
    #Get the model of the car.
    year = input('Enter the year of the car: ')


    #Get the year of the car.
    make = input('Enter the model of the vehicle: ')

    speed = 0


    print('Okay we are not moving so your current speed is 0')

    #Create a car object.
    my_car = car.Car(year, make, 0)

    for count in range(5):
        print('Give it some gas!!!')
        time.sleep(2)
        my_car.accelerate()
        print('Your current speed is: ',my_car.get_speed())

    for count in range(5):
        print('Whoa whoa whoa slow dowwn!!!')
        time.sleep(2)
        my_car.brake()
        print('Your current speed is:', my_car.get_speed())



    print('Your', make, 'runs pretty good.')

main()

类函数中缺少
self
参数。应该是:

def accelerate(self, speed):

调用时请记住传递
speed
参数

类函数中缺少
self
参数。应该是:

def accelerate(self, speed):

调用时请记住传递
speed
参数

您的代码存在许多问题。首先,所有类方法都应该将
self
作为它们的第一个参数。其次,您定义了一些返回值的类方法(如
accelerate
),但没有使用这些值。也许在这种情况下,您真的希望修改方法中的速度。例如:

    def accelerate(self):
        self.__speed += 5

我还注意到您正在调用
my\u car.get\u speed()
,但您还没有使用该名称定义任何方法(仅
\u get\u speed
)。您可能不想用双下划线命名方法。查看PEP8中指定的代码。

您的代码存在许多问题。首先,所有类方法都应该将
self
作为它们的第一个参数。其次,您定义了一些返回值的类方法(如
accelerate
),但没有使用这些值。也许在这种情况下,您真的希望修改方法中的速度。例如:

    def accelerate(self):
        self.__speed += 5

我还注意到您正在调用
my\u car.get\u speed()
,但您还没有使用该名称定义任何方法(仅
\u get\u speed
)。您可能不想用双下划线命名方法。看看PEP8中指定的文件。

我更改了它并运行了它,它给了我这个回溯(上次的最新调用):文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”,第36行,在main()文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”的第24行,主打印(“您当前的速度是:”,我的车。获取速度()AttributeError:“Car”对象没有属性“get_speed”>>@DanielStallard您不应该将该函数命名为
\uu get_speed
,将其更改为
get_speed
!@DanielStallard:如果您将声明更改为使用名称
get_speed
,则它应该工作。当您用两个前导下划线(“dunder”)命名,因为类和实例属性都有前导(而不是尾随)dunder被名称损坏,以允许用户和子类意外使用安全名称。除非您试图使类成为私有方法或属性,否则不要使用前导dunder。好的,看这就是我更改的::def get_speed(self,speed):return self。方法def accelerate(self,speed):speed+5 return speed def brake(self,spee):speed-5 return speed?创建一个car对象。my_car=car.car(年份,品牌,0)计算范围(5):打印(‘给它一些汽油!!!’)时间。睡眠(2) 我的车。加速(速度)打印('你的当前速度是:',我的车。获取速度())在范围内计数(5):打印('哇哇哇哇哇慢下来!!!')时间。睡眠(2)我的车。刹车(速度)打印('你的当前速度是:',我的车。获取速度())我改变了它,并运行了它,它给了我这个回溯(最后一次调用):主打印文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”第36行,主()文件“H:\Documents\itp100 softwaredesign\assingments\Project2\run\u car.py”第24行(“您当前的速度是:”,my\u car.get\u speed())AttributeError:“Car”对象没有属性“get_speed”>>@DanielStallard您不应该将该函数命名为
\uu get_speed
,将其更改为
get_speed
!@DanielStallard:如果您将声明更改为使用名称
get_speed
,则它应该工作。当您用两个前导下划线(“dunder”)命名,因为类和实例属性都有前导(而不是尾随)dunder被名称损坏,以允许用户和子类意外使用安全名称。除非您试图使类成为私有方法或属性,否则不要使用前导dunder。好的,看这就是我更改的::def get_speed(self,speed):return self。方法def accelerate(self,speed):speed+5 return speed def brake(self,spee):speed-5 return speed?创建一个car对象。my_car=car.car(年份,品牌,0)计算范围(5):打印(‘给它一些汽油!!!’)时间。睡眠(2) 我的车。加速(速度)打印('你的当前速度是:',我的车。获取速度())在范围内计数(5):打印('哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇同意;
加速
制动
看起来自然状态良好;让它们返回一个新值并离开