我尽量遵守PEP8编码约定。我有一个叫做main
的包。在包中有一个名为time
的模块,其中有一个名为Time
的类。现在我有一点麻烦为我的实际实例找到一个合适的名称,因为time
,这通常是我的选择,已经由模块采取,似乎有一个名称冲突,如果我这样命名它。
from main.time import Time
time = Time()
...
if time.status == main.time.STOPPED
也许我也把常量放在了错误的模块中,但我认为把常量放在它们所属的地方会更好。这是在我的类Time
(和main
模块)中使用的常量,所以我可以确保我不会将它与用于玩家移动的另一个称为STOPPED
的常量混淆。不幸的是,我得到了一个AttributeError: 'function' object has no attribute 'time'
。
这里最好的解决方案是什么?将常量重命名为TIME_STOPPED
和PLAYER_STOPPED
,并将它们放入常量模块?将我的实例变量命名为my_time
或time_
或类似的东西并不是我真正想做的。什么是Pythonic的方法?
使用名称time
是一个糟糕的选择,不仅因为您已经有一个名为time
的模块,而且还因为有一个名为time
的标准库模块。
无论如何,这实际上不是你的问题(也许是与STL模块的冲突,但你没有显示足够的代码)。错误AttributeError: 'function' object has no attribute 'time'
表示main
(在main.time
中)是函数,而不是模块。您的time = Time()
行不是造成这种情况的原因,而是可执行文件中另一个名为main
的函数对象。