(python)将对象创建为模块

(python)将对象创建为模块,python,python-3.x,Python,Python 3.x,我是一名C开发人员,我也决定学习python。我不明白为什么我不能创建我在单独模块中创建的类的实例。这是我的car.py模块,它包含我的car对象 class Car: type = "" def __init__(self, type): self.type = type 这是我的另一个模块,我试图在其中使用Car对象 import car x = Car() print(x.type) 我在实例化Car变量的第三行上得到一个错误,上面写

我是一名C开发人员,我也决定学习python。我不明白为什么我不能创建我在单独模块中创建的类的实例。这是我的car.py模块,它包含我的car对象

class Car:
    type = ""
    def __init__(self, type):
        self.type = type
这是我的另一个模块,我试图在其中使用Car对象

import car
x = Car()
print(x.type)
我在实例化Car变量的第三行上得到一个错误,上面写着“Undefined variable'Car'pylint(Undefined variable)”

我在将模块重新定位到项目中的另一个目录时也遇到问题。目录名为“objects”。当我尝试导入模块时,它会在模块‘objects’pylint(模块中没有名称)中显示“没有名称‘car’”。这是我的进口货

from objects import car
尝试:

此外,您还可以使用:

from car import Car

x = Car()
print(x.type)

创建并导入模块时,您需要指定用于创建实例的命名空间

这可以通过两种方式完成,一种是在创建实例时指定名称空间,另一种是使名称空间可用于整个文件:

来自汽车进口*
来自汽车进口汽车
如果您只想要汽车类

然后您可以执行
x=Car

或者,您可以在创建实例时导入模块并指定命名空间:

import car
car = car.Car()

import
语句在命名空间中创建对命名对象的引用,必要时加载包含该对象的模块。模块也是对象

import car
此语句在全局命名空间中创建对
car
模块的引用。模块对象有一个名为
Car
的类对象作为其属性之一。您可以使用

x = car.Car()
您可以使用
from
关键字更有选择性地导入。这样,您就可以直接绑定所需的名称,而不是在命名空间中创建名称
car

from car import Car
使用这种形式的
import
语句,您的代码应该可以直接工作

在相关说明中,您还可以使用
as
关键字更改导入对象绑定到的名称,就像使用赋值一样:

from car import Car as Auto

x = Auto()


从汽车导入汽车
,并在其他答案已解决您的导入/模块范围界定相关问题之前保留代码。在创建对象时,还需要为type传递一个值:x=Car(type)。此外,type是Python中的内置函数,因此您应该小心使用它不会影响内置函数。请不要建议OP使用来自Car import的
*
——这不是一个好主意。
from car import Car as Auto

x = Auto()
import car as auto

x = auto.Car()