参考来源:
https://www.zhihu.com/question/19754941
https://blog.csdn.net/houyanhua1/article/details/78171364
欢迎讨论交流,如有侵权请联系本人!
a_name
:前后无下划线表示该变量、函数、成员或方法(以下简称内容)公有,可以以任何形式访问。_a_name
:前置单下划线表示该内容受保护。如果是变量或者函数,在from some_module import *
这种情况下,不会被导入。如果是成员或者方法,仅允许类内部及该类的子类继承。需要注意的是,受保护的内容在完整明确的引用下,仍然可以直接使用,例如a_instance._a_method()
。__a_name
:前置双下划线表示该内容私有,无法以任何方式被外部直接使用。如果是类的情况,即使属于该类的子类也无法继承该成员或者方法,但仍可以用a_instance._ClassName__MethodName()
来调用。__a_name__
:前后双下划线的命名方式被Python独占,用以命名各类magic方法,具体内容请自行查询。虽然使用此命名方式并没有被解释器禁止,但是Python官方建议最好不要这样做。a_name_
:后置单下划线,用于避免和Python关键词冲突,无特殊含义,例如:int_
。原文:https://www.cnblogs.com/icemaster/p/10595498.html