Skip to main content
 首页 » 编程设计

python之在另一个模块中使用类/函数

2025年05月04日1298°冷暖

我的背景主要是 Java,但最近开始钻研 Python。我基本上已经明白了,但是有些语法对我来说真的很奇怪。我有我正在处理的这个项目,其中包含多个文件/类。我有一个类,Mesh.py:

class Mesh: 
    def __init__(self, name): 
        #dostuff 

我想在另一个文件 Main.py 中实例化。我注意到两件事,

  1. 我必须导入 Mesh,这对我来说很奇怪,因为它在我的项目中,
  2. 要创建网格,我必须这样做:

    mesh = Mesh.Mesh('name') 
    

这看起来 super 尴尬。为什么我不能做

mesh = Mesh('name') 

我是不是做错了什么,或者这只是 Python 不可避免的一部分?

请您参考如下方法:

在 Python 中,您创建的每个文件都是一个模块,并且模块的集合可以在逻辑上分组为 package . Python 与 Java 略有不同,Java 允许在不显式导入的情况下使用同一包中的文件。

由于模块是命名空间,因此无论何时在模块中使用标识符,都必须在其中定义它,否则您将得到一个NameError。

当你导入一个模块时,

import Mesh 

Python 知道您已经导入了一个模块,并且其中的所有项都可以使用模块名称进行引用。如果你这样做

网格('名称')

你会报错,因为当前模块只导入了Mesh模块,没有导入Mesh类。这就是为什么你必须明确指定

Mesh.Mesh('name') 

这意味着,你是在告诉 Python,我指的是我导入的 Mesh 模块中的 Mesh 类。

但在您的情况下,您只能将 Mesh 模块中的特定类导入当前模块的命名空间,如下所示

from Mesh import Mesh 

然后创建一个它的对象,像这样

Mesh('name')