Python类问题。名称未定义错误

问题描述 投票:1回答:3

我的主要代码是这样:

import CarDefinition # <- change ONLY this line to point to your class definition file

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

    print("my_car after instantiating:\n", my_car)

    my_car.setSpeed(2)
    print("my_car after my_car.setSpeed(2):\n", my_car)
    # Accelerate 5 times
    print ("car is accelerating: ")
    for i in range(5):
        my_car.accelerate()
        print ("Current speed: ", my_car.getSpeed())

    print()
    # Brake 7 times
    print ("car is braking: ")
    for i in range(7):
        my_car.brake()
        print ("Current speed: ", my_car.getSpeed())

    print("my_car values at program end:\n", my_car)


main()

而我的导入CarDefinition是这个:

class Car:
    __year_model = ""
    __make = ""
    __speed = 0

    def __init__(self, year_model, make):
        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 setSpeed(self, inp_speed):
        if inp_speed < 0:
            print("Speed cannot be negative")
        else:
            self.__speed = inp_speed

    def getSpeed(self):
        return self.__speed

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

编辑:文件夹结构在这里显示:Folder Structure picture

我的结果出来是说NameError:名称输入代码“ CarDefinition”未定义。

是的,这是一个作业问题,但我不是来这里要求我完成作业的。我已经看了2天了,我找不到如何超越第5行的方法。我发布的这部分是我要开始使用的默认代码。我只是编写没有问题的Brake和Accelerate函数代码。有人可以帮忙指出我所缺少的吗???顺便说一句,我正在使用python 3.7

python python-3.x
3个回答
0
投票

我相信您在同一目录中没有文件。

我从两个文件复制了代码,并在文件夹中创建了此结构:

drwxr-xr-x   4 foobar  staff  128 Dec 10 20:02 .
drwx------+ 13 foobar  staff  416 Dec 10 19:57 ..
-rw-r--r--@  1 foobar  staff  969 Dec 10 19:57 CarDefinition.py
-rw-r--r--@  1 foobar  staff  709 Dec 10 19:59 main.py

然后像下面这样执行main.py文件:

python main.py

这是输出:

('my_car after instantiating:\n', <CarDefinition.Car instance at 0x108512950>)
('my_car after my_car.setSpeed(2):\n', <CarDefinition.Car instance at 0x108512950>)
car is accelerating:
Traceback (most recent call last):
  File "main.py", line 27, in <module>
    main()
  File "main.py", line 14, in main
    my_car.accelerate()
AttributeError: Car instance has no attribute 'accelerate'

因此,建议您检查文件的位置,确认它们位于同一文件夹中,然后重试。如果这样做,则无需更改任何代码。玩得开心!


0
投票

问题在于您尝试创建car实例时的主要功能。您只需要写my_car = Car("2008", "Honda Accord")而不是my_car = CarDefinition.Car("2008", "Honda Accord")

我已经使用下面给出的主要代码运行了代码,并且运行正常。

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

print("my_car after instantiating:\n", my_car)

my_car.setSpeed(2)
print("my_car after my_car.setSpeed(2):\n", my_car)
# Accelerate 5 times
print ("car is accelerating: ")
for i in range(5):
    #my_car.accelerate()
    print ("Current speed: ", my_car.getSpeed())

print()
# Brake 7 times
print ("car is braking: ")
for i in range(7):
    #my_car.brake()
    print ("Current speed: ", my_car.getSpeed())

print("my_car values at program end:\n", my_car)
main()

我已经注释了加速和制动功能调用,因为您尚未实现它们。


0
投票

我的两个文件保存在同一目录中。但是由于某种原因,当我将它们复制到新文件夹时,一切都按预期运行。我不知道该如何回答,但这有点让我想起了技术支持,问的第一个问题是“是否插入?”感谢您的帮助。留下一点脸蛋

© www.soinside.com 2019 - 2024. All rights reserved.