如何在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_STOPPED
和 PLAYER_STOPPED
并将它们放入常量模块中?将我的实例变量命名为 my_time
或 time_
或类似的东西并不是我真正想要做的。什么是 Pythonic 方式?
一开始使用名称 time
是一个糟糕的选择,不仅因为您已经有一个名为 time
的模块,还因为有一个名为 [=] 的标准库模块10=].
无论如何,这实际上不是您的问题(也许是与 STL 模块的冲突,但您没有显示足够的代码)。错误 AttributeError: 'function' object has no attribute 'time'
表示 main
(在 main.time
中)是一个 函数 ,而不是模块。你的行 time = Time()
不是这个的原因,而是你的可执行文件中另一个名为 main
的 function 对象。
我尽量遵守 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_STOPPED
和 PLAYER_STOPPED
并将它们放入常量模块中?将我的实例变量命名为 my_time
或 time_
或类似的东西并不是我真正想要做的。什么是 Pythonic 方式?
一开始使用名称 time
是一个糟糕的选择,不仅因为您已经有一个名为 time
的模块,还因为有一个名为 [=] 的标准库模块10=].
无论如何,这实际上不是您的问题(也许是与 STL 模块的冲突,但您没有显示足够的代码)。错误 AttributeError: 'function' object has no attribute 'time'
表示 main
(在 main.time
中)是一个 函数 ,而不是模块。你的行 time = Time()
不是这个的原因,而是你的可执行文件中另一个名为 main
的 function 对象。