首页 > 解决方案 > 导入和名称绑定最佳实践

问题描述

这与:Importing modules in Python - best practice 密切相关,但下面的案例并没有真正详细讨论。

如果我们有一个模块coordinates,它定义了一个类Coordinates和几个实用函数来使用该Coordinates类型。做以下两件事的推荐方法是什么:

  1. 导入完整的coordinates模块
  2. 绑定Coordinatescoordinates.Coordinates

我现在看到的两个选项:

import coordinates
from coordinates import Coordinates

但这似乎有点奇怪,另一方面,我看到的另一个解决方案似乎也不是很干净:

import coordinates 
Coordinates = coordinates.Coordinates

这两种方法中哪一种是最常用或首选的方法?或者也许这两个都不应该使用,在这种情况下,什么是更好的解决方案?

我正在考虑但我希望避免的另一种选择是在引用的问题中提出的一种选择:import coordinates as crd然后简单地使用crd.Coordinates而不是Coordinates. 我想避免这种情况的原因是因为它会降低我的代码的可读性,特别是当我使用coordinates模块中的函数时。coordinates.Coordinates对于这种替代方案,即使看起来多余,我也可能更愿意简单地调用。

我还考虑过让我的模块可调用以coordinates()自动调用Coordinates(),但我也不确定它是否真的是一个好的解决方案(而且我不确定在这种情况下如何处理文档)。

标签: pythonclassimportmodule

解决方案


这是个人喜好的问题,但对于我自己来说,我会选择:

from coordinates import Coordinates

除非,也就是说,您从coordinates模块中使用了三个或四个以上的东西,或者您从中导入的名称之一与您从其他地方使用的名称发生冲突。在任何一种情况下,请选择

import coordinates

推荐阅读