我尝试坚持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的方式?
答案 0 :(得分:3)
使用名称time
是一个不错的选择,不仅仅因为您已经有一个名为time
的模块,还因为有一个名为{{1}的标准库模块}。
无论如何,这实际上不是你的问题(可能与STL模块冲突,但你没有显示足够的代码)。错误time
表示AttributeError: 'function' object has no attribute 'time'
(在main
中)是函数,而不是模块。您的行main.time
不是原因,而是您的可执行文件中名为time = Time()
的另一个函数对象。