PEP 8-模块名称与实例的变量名称

时间:2019-07-16 07:06:03

标签: python naming pep8

假设我有一个包含类my_class.pysee PEP 8 convention for modules)的Python模块MyClasssee PEP 8 convention for classes)。

现在,我想在同一包中的模块中实例化该类,通常可以做到

from .my_class import MyClass
my_class = MyClass()

因为PEP 8为实例变量名称here提出了这种命名方案。

但是,在这种情况下,my_class已经引用了模块my_class.py,因此实例变量将对模块进行屏蔽。

PEP 8或任何其他来源是否对如何进行此处提供任何指导,还是由开发人员考虑为变量使用其他但不太直观的名称?

1 个答案:

答案 0 :(得分:4)

在您的示例中,您已明确导入MyClass

导入模块my_class时,不会在您的本地作用域中为其分配变量,因此您不会通过在my_class实例中使用MyClass来对其进行遮蔽。

更新

在同一包中导入模块时,它看起来像是将引用添加到本地范围,但是,使用相同名称没有风险。 Python中的变量是对对象而不是对象的引用。

当您重新分配引用(例如,使用另一个对象的名称)时,如果没有其他引用,则该对象将被删除。对于模块,在导入时将它们添加到sys.modules中,在这种情况下,总是存在另一个引用,并且不会删除它们。