如何在Python中命名实例变量?

时间:2015-10-13 13:46:53

标签: python python-3.x name-conflict

我尝试坚持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_STOPPEDPLAYER_STOPPED并将它们放入常量模块中?命名我的实例变量my_timetime_或类似的东西并不是我想做的事情。什么是Pythonic的方式?

1 个答案:

答案 0 :(得分:3)

使用名称time是一个不错的选择,不仅仅因为您已经有一个名为time的模块,还因为有一个名为{{1}的标准库模块}。

无论如何,这实际上不是你的问题(可能与STL模块冲突,但你没有显示足够的代码)。错误time表示AttributeError: 'function' object has no attribute 'time'(在main中)是函数,而不是模块。您的行main.time不是原因,而是您的可执行文件中名为time = Time()的另一个函数对象。