首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Car类错误

Car类错误
EN

Stack Overflow用户
提问于 2014-12-18 12:45:32
回答 1查看 566关注 0票数 2

我在解决这个问题上遇到了困难。我得到了两个不同的代码,这就是我遇到麻烦的地方。我在第38行得到一个错误,是"UnboundLocalError:局部变量'year‘在赋值前引用“我不太确定我做错了什么,我是新手,但是非常感谢任何帮助。

代码语言:javascript
复制
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()

然后将其连接到此代码。

代码语言:javascript
复制
import ct_CarDefinition

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

    print(my_car)

main()
EN

回答 1

Stack Overflow用户

发布于 2014-12-18 12:52:04

试试这个:

代码语言:javascript
复制
def main():
    year=(input('car year: '))
    make=(input('car make: '))
    speed=0
    my_car = Car(year, make, speed)  #use this once you have assigned values for "year", "make", "speed"

另外,在您的类定义中更改以下内容:

代码语言:javascript
复制
class Car:
    def __init__(self, year_model, make, speed):        #add "speed" parameter
        self.__year_model = year_model
        self.__make = make
        self.__speed = 0 

而且,您没有在您的Car类中定义"accelerate“和"brake”方法。因此,使用my_car.accelerate()my_car.brake()将抛出错误:

代码语言:javascript
复制
AttributeError: Car instance has no attribute 'accelerate'

您可以向Car类添加以下方法:

代码语言:javascript
复制
############# accelerate ################
def accelerate(self):
    self.__speed = self.__speed +5

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

另外,在main方法中调用set_speedget_speed时,请将名称更改为这两个方法。

代码语言:javascript
复制
############# 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

输出:

代码语言:javascript
复制
#car year: 1998
#car make: "Honda Accord"
#('Current speed is', 0)
#('My current speed:', 5)
#('My current speed:', 10)
#('My current speed:', 15)
#('My current speed:', 20)
#('My current speed:', 25)
#('My current speed after brake:', 20)
#('My current speed after brake:', 15)
#('My current speed after brake:', 10)
#('My current speed after brake:', 5)
#('My current speed after brake:', 0)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27539399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档