4

考虑以下模式:

'''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.

为什么会这样?

--

如果用“__”命名它是不好的,那么 Python 中使模块方法仅可用于内部模块函数/方法的最佳实践是什么?

4

1 回答 1

5

不要以双下划线开头的名称。在类语句中找到的任何标识符,以至少 2 个下划线开头并以少于 2 个下划线结尾,都将被_Classname添加到它的前面,其中Classname是类的名称。这应该为私有变量提供有限的支持,但使用它通常被认为是不好的做法。

于 2013-07-05T03:41:20.617 回答