尽管能够从同一模块导入不同的类,但无法在导入的模块中找到类

如何解决尽管能够从同一模块导入不同的类,但无法在导入的模块中找到类

我使用的是 Python 3.9.6,我正在学习如何从 Python 书籍中导入类。我有一个包含几个类和一个子类的文件。我可以使用 import car 然后访问 Car 类而没有任何问题。但是,如果我尝试访问同一个文件 ElectricCar() 中的子类,我会得到一个 ImportError

我不认为这可能是 PATH 问题,因为我可以毫无问题地访问 Car。我正在关注作者能够做到这一点的示例问题,所以我试图理解为什么它对我不起作用。

这有效:

from car import Car

myTesla = Car('tesla','model s',2019)

但这不会:

from car import ElectricCar

myTesla = ElectricCar('tesla',2019)

当我尝试导入 ElectricCar 时出现此错误

Traceback (most recent call last):
  File "C:/Users/marchy/AppData/Local/Programs/Python/python39/Scripts/myElectricCar.py",line 1,in <module>
    from car import ElectricCar
ImportError: cannot import name 'ElectricCar' from 'car' (C:\Users/marchy/AppData/Local/Programs/Python/python39/Scripts\car.py)

这是包含我试图访问的两个类的 car.py内容

'''A set of classes that can be used to represent gas and electric cars.'''

class Car:
    '''A simple attempt to represent a car.'''
    def __init__(self,make,model,year):
        '''Initialize attributes to describe a car.'''
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0 # attribute with default value = 0

    def get_descriptive_name(self):
        '''Return a neatly formatted descriptive name.'''
        long_name = f'{self.year} {self.make} {self.model}'
        return long_name.title()

    
class Battery:
    '''A simple attempt to model a battery for an electric car.'''
    --snip--
            
class ElectricCar(Car):
    '''Represent aspects of a car,specific to electric vehicles.'''

    def __init__(self,year):
        '''Initialize attributes of the parent class.
           Then initialize attributes specific to an electric car.
        '''
        super().__init__(make,year)
        self.battery = Battery()

解决方法

是的,我犯了一个愚蠢的错误。我有一个名为 car.py 的单独文件,其中不包含 ElectricCar 类。我进口车的时候,我进口的是没有ElectricCar的版本。

,

您发布的代码应该可以工作。检查您是否有另一个名为 car.py 的文件没有 ElectricCar 类,因为您可能从该文件导入了类。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?