Joã*_*lva 6 python naming-conventions name-clash
请考虑以下Python模块摘录:
foo.py:
class Foo:
(...)
Run Code Online (Sandbox Code Playgroud)
bar.py:
import foo
foo = foo.Foo()
Run Code Online (Sandbox Code Playgroud)
变量foo是一个模块对象,用Foo对象覆盖.
我知道我可以使用其他名称作为对象,例如:
foobar = foo.Foo()
Run Code Online (Sandbox Code Playgroud)
但从语义上来说,在我的代码中将它称为foo更有意义,因为它将是唯一的实例.
(我试图通过删除类和仅使用模块来解决这个问题,但我回到使用类,因为使用模块只有"健壮性"问题.)
这是一个哲学问题,但处理这个潜在对象/模块名称冲突的"正确"方法是什么?
在我看来,你目前正在做的事情没有任何问题,但为了让每个人都能更清楚地阅读代码,我建议你将代码更改为以下内容:
import foo as foo_mod
foo = foo_mod.Foo()
Run Code Online (Sandbox Code Playgroud)
或者:
from foo import Foo
foo = Foo()
Run Code Online (Sandbox Code Playgroud)
这可以防止名称冲突,因此更明显的是foo模块中的变量不会引用同名模块.