python - 车类错误

标签 python

我很难解决这个问题。我得到了 2 个单独的代码,这就是我遇到麻烦的地方。我在第 38 行收到一个错误,即“UnboundLocalError:赋值前引用的局部变量‘year’”我不确定我做错了什么,我是 Python 的新手,但非常感谢任何帮助。

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

    ############# year_model################
    def setYear_model(self, year_model):
        self.__year_model = year_model

    def getYear_model(self):
        return self.__year_model

    ############# Make################
    def setMake(self, make):
        self.__make = make

    def getMake(self):
        return self.make

    ############# speed################
    def set_Speed(self, speed):
        if speed < 0:
            print("Speed cannot be negative")
        else:
            self.__speed = speed

    def get_Speed(self):
        return self.__speed

    ############# str ############
    def __str__(self):
        return "Make : " + self.__make + ", Model Year :" + \
            self.__year_model + ", speed =" + str(self.__speed)

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

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


def main():

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

    #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()

然后连接到此代码。

import ct_CarDefinition

def main():
    # Create an instance of Car
    my_car = ct_CarDefinition.Car("2008", "Honda Accord")

    print(my_car)

main()

最佳答案

在将变量设置为任何值之前,您尝试使用变量 year(同样,makespeed):

my_car = Car(year, make, speed)

year=(input('car year: '))
make=(input('car make: '))
speed=0

除非您能以某种方式读懂用户的想法,否则在询问用户的首选年份和制造商之前,您无法创建 2008 Honda Accord;就你所知,他可能会要一辆 2014 款保时捷 Boxster。因此,只需创建 Car您知道要创建什么护理之后。

此外,您尝试将三个参数传递给 Car(year, make, speed),但它只需要两个。 Car 始终以 0 速度开始,因此您不必超过它。

year=(input('car year: '))
make=(input('car make: '))

my_car = Car(year, make)

有一些语言,称为数据流编程语言,可以让您像这样创建“不完整的值”,因此 my_car 将是一个有歧义的 Car,但是只要您在填写 yearmakespeed 之前不尝试使用它,就没有人会在意它是否完整。但 Python 不是这样一种语言,您可能使用的大多数其他语言也不是。

关于python - 车类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27539399/

相关文章:

python - 派斯帕克。 spark.SparkException : Job aborted due to stage failure: Task 0 in stage 15. 0 失败 1 次,java.net.SocketException:连接重置

python - 用 Cython 包装 C++ 库

python - 在不创建多个脚本的情况下同时运行多个 python 脚本

python - Pygame.movi​​e 丢失

python - sqlalchemy:控制从查询中选择的列

python - 可以集成 Google AppEngine 和 Google Code 以进行持续集成吗?

python - 如何使用 BeautifulSoup 访问带命名空间的 XML 元素?

python - 如何在Windows中播放.wav文件?

python - Tensorflow RNN 单元权重共享

python - 从一长串文本中删除所有换行符