gpt4 book ai didi

Python 模块和对象名称冲突

转载 作者:太空狗 更新时间:2023-10-29 23:59:43 26 4
gpt4 key购买 nike

请考虑以下 Python 模块摘录:

foo.py:

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 模块和对象名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com