Skip to content

# Python中关于私有、公有 的属性和方法

zshaolin edited this page May 20, 2018 · 1 revision

Python中关于私有和公有属性与方法

在模块中,单下划线开头的常被默认为内部函数,用from module import * 的方式,这些单下划线开头的变量和函数不会被导入;但是import module 这种方式导入模块的话,可以用module._变量 的形式访问到这些变量和函数。

以单下划线结尾的变量,通常是用于区分python中的关键字,比如Class 是关键字,我们可以变成 class_ 来定义一个变量。

双下划线开头的命名形式,通常用于python的类中,用于将变量伪私有化,即用双下划线开头的属性或方法,不能被外部调用;但实际上只是将该变量的名字做了改变,比如__method 变为了 _class_mwthod,通过 class(类名).__class__method的方式仍然可以调用。伪私有化的目的

python中的私有变量和私有方法仍然是可以访问的;访问方法如下:

私有变量:实例._类名__变量名

私有方法:实例._类名__方法名()

私有的属性,方法,不会被子类继承,也不能被访问

Python并没有真正的私有化支持,但可用下划线得到伪私有。

(1)_xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量, 需通过类提供的接口进行访问;不能用'from module import *'导入

(2)__xxx类中的私有变量/方法名,"双下划线"开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

(3)xxx 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 init()代表类的构造函数。

后注

1.Python的伪私有属性

2.Python类私有方法的陷阱