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

How to name instance variables in Python?

我尽量遵守 PEP8 编码约定。我有一个名为 main 的包裹。包内有一个名为 time 的模块,其中有一个名为 Time 的 class。现在我在为我的实际实例找到一个合适的名称时遇到了一些麻烦,因为通常我选择的 time 已经被模块采用,如果我这样命名它似乎会发生名称冲突.

from main.time import Time

time = Time()
...
if time.status == main.time.STOPPED

也许我也把常量放在了错误的模块中,但我认为我的常量放在它们所属的地方会更好。这是我的 class Time(和 main 模块)中使用的常量,因此我可以确保不会将它与另一个名为 STOPPED 的常量混淆用于玩家移动。不幸的是我得到了 AttributeError: 'function' object has no attribute 'time'.

最好的解决方案是什么?将常量重命名为 TIME_STOPPEDPLAYER_STOPPED 并将它们放入常量模块中?将我的实例变量命名为 my_timetime_ 或类似的东西并不是我真正想要做的。什么是 Pythonic 方式?

一开始使用名称 time 是一个糟糕的选择,不仅因为您已经有一个名为 time 的模块,还因为有一个名为 [=] 的标准库模块10=].

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