Python 导入和名称绑定最佳实践
这与:,密切相关,但下面的案例并未详细讨论 如果我们有一个模块Python 导入和名称绑定最佳实践,python,class,import,module,Python,Class,Import,Module,这与:,密切相关,但下面的案例并未详细讨论 如果我们有一个模块coordinates,它定义了一个类coordinates和几个实用函数来处理coordinates类型。以下两件事的推荐方法是什么: 导入完整的坐标模块 将坐标绑定到坐标。坐标 我现在看到的两个选择: 导入坐标 从坐标导入坐标 但这似乎有点奇怪,另一方面,我看到的另一种解决方案似乎也不是很干净: 导入坐标 坐标=坐标。坐标 这两种方法中,哪一种是最常用或首选的方法?或者这两种方法都不应该使用,在这种情况下,什么是更好的解决方案
coordinates
,它定义了一个类coordinates
和几个实用函数来处理coordinates
类型。以下两件事的推荐方法是什么:
坐标
模块坐标
绑定到坐标。坐标
导入坐标
从坐标导入坐标
但这似乎有点奇怪,另一方面,我看到的另一种解决方案似乎也不是很干净:
导入坐标
坐标=坐标。坐标
这两种方法中,哪一种是最常用或首选的方法?或者这两种方法都不应该使用,在这种情况下,什么是更好的解决方案
我正在考虑但我更愿意避免的另一个选择是在参考问题中提出的:将坐标导入为crd
,然后简单地使用crd.coordinates
而不是坐标
。我之所以要避免这种情况,是因为它会降低代码的可读性,特别是当我使用坐标
模块中的函数时。对于这个替代方案,我可能更愿意简单地调用coordinates.coordinates
,即使这看起来是多余的
我也考虑过让
coordinates()
自动调用coordinates()
,但我也不确定这是否是一个好的解决方案(我也不确定在这种情况下如何处理文档) 这是个人喜好的问题,但对我自己来说,我会选择:
from coordinates import Coordinates
除非,也就是说,您从坐标
模块中使用了三到四个以上的东西,或者您从中导入的一个名称与您从其他地方使用的名称发生冲突。在上述任何一种情况下,请选择
import coordinates
您不想从坐标导入中执行
*
?至于你的问题,我会选择第一个选项。。。这对其他开发人员来说更有意义,从不
进行星型导入,除非您知道自己在做什么不,当然我不希望这样,我的linter不会真的喜欢它:p我使用的坐标
中的函数数(在某些情况下)大于4。在这些情况下,我真的不想从坐标中调用导入坐标、foo、bar、baz等
。我还希望在项目中导入模块/类的方式上保持一致(再次强调,除非我没有其他可行的替代方案)。正如我所说,这是个人偏好的问题。