python中单下划线和双下划线的区别
1.单下划线 在python中单下划线代表私有,但也仅仅是名义上的私有,只是一种规范,告诉人们不要在外部使用它。但实际上python没有真正意义上的私有,我们一样可以在外部去调用私有方法或属性。 class BaseForm(StrAndUnicode): def _get_errors(self): ''' Returns an ErrorDict for the data provided for the form :return: ''' if self._errors is None: self.full_clean() return self._errors errors = property(_get_errors) 该代码片段来自Django源码(django/forms/forms.py)。这段代码的设计就是errors属性是对外API的一部分,如果你想获取错误详情,应该访问errors属性,而不是(也不应该)访问_get_errors方法。实际上我们仍然可以使用对象在外部调用它。 baseform = BaseForm() baseform._get_errors() 2.双下划线 双下划线使用来避免父类方法被子类方法覆盖的。双下划线方法的本质是在方法前加了_类名,我们可以使用对象._类名__方法名(),来在外部调用它。 class A(object): def