请考虑以下Python模块摘录:
foo.py:
-------欢迎加入python学习交流扣扣裙851211580-------
class Foo:
(...)
bar.py:
import foo
foo = foo.Foo()
作为模块对象的变量foo被Foo对象覆盖。
我知道可以为该对象使用其他名称,例如:
foobar = foo.Foo()
但是从语义上讲,在我的代码中将其称为foo更有意义,因为它将是唯一的实例。
(我尝试通过删除类并仅使用模块来解决此问题,但由于使用模块仅存在“鲁棒性”问题,因此我又回到使用类的方法。)
这是一个哲学问题,但是处理这种潜在的对象/模块名称冲突的“正确”方法是什么?
解决方案
在我看来,您目前的工作没有任何问题,但是为了使每个阅读该代码的人都更加清楚,我建议将您的代码更改为以下内容:
import foo as foo_mod
foo = foo_mod.Foo()
或者:
from foo import Foo
foo = Foo()
这样可以防止名称冲突,因此,很明显,foo模块中的变量将不会引用相同名称的模块。
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。