(1)_xxx
"单下划线 " 开始的成员变量相当于受保护的类/成员的变量/函数,只有本类和子类中能使用这些变量/函数。
外部可以也可以调用,比如类属性通过“类名._xxx”, 成员变量可以通过“对象名._xxx”, 这样是不规范的,pycharm中会提示:Access to a protected member _a of a class
(2)__xxx
双下划线开始的是类/成员的私有变量/函数 ,只有本类中可以访问,子类中也不能访问。外部无法通过类/实例调用。
(2)__xx__
系统定义名字,前后均有一个"双下划线"是代表python里特殊方法专用的表示,如__init__()代表类的构造函数。
- 以上访问的限制,同样适用于静态方法(@staticmethod)和类方法(@classmethod)。
- 直接写在模块中的_xxx和__xxx 变量和函数,通过 from 模块名 import * 不会导入。可以通过 import 模块名, 模块名._xxx 或 模块名.__xxx 的访问到,但这是不规范的。