考虑以下模式:
'''some module body'''
def __foo():
'''module method foo'''
pass
class Dummy(object):
@staticmethod
def bar():
__foo()
__foo() # No Error.
Dummy.bar() #NameError: Global name "_Dummy__foo" is not defined.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
-
如果用"__"命名它是不好的,那么Python中使模块方法仅用于内部模块函数/方法的最佳做法是什么?
不要以双下划线开始名称.在类语句中找到的任何标识符(从至少2个下划线开始,以少于2个下划线结尾)将被_Classname添加到其中,其中Classname是类的名称.这应该为私有变量提供有限的支持,但使用它通常被认为是不好的做法.