如何在Python中命名实例变量



我尽量遵守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的方法?

使用名称time是一个糟糕的选择,不仅因为您已经有一个名为time的模块,而且还因为有一个名为time的标准库模块。

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

相关内容

  • 没有找到相关文章

最新更新