python教程系列(二.1.2、封装&公有私有)
3 面向对象三大特性:
- 封装
- 继承
- 多态
3.1 封装
-
封装就是将对象的成员进行访问限制,限制访问的位置
-
封装的三个级别:
- 公开,public (不是关键字,就是英文翻译)
- 受保护的,protected (不是关键字,就是英文翻译)
- 私有的, private (不是关键字,就是英文翻译)
-
检测封装的位置:
- 类/对象的内部
- 类/对象的外部
- 子类中
-
私有化封装 private
-
私有化封装是将对象成员最高级别的封装。封装之后,只能在当前类/对象中访问,无法在类的外部和,子类中访问
-
封装方法: 在成员名称前添加 __即可(2个下划线)
例如: heart 私有化封装操作 _ _heart 注意:在Python中私有化封装采用的是name mangling的改名策略实现的,本质上只是把成员名改了导致原有成员名无法访问到,可以使用对象.\_类名\_\_成员名的方式访问(没事别这么干)
-
访问限制及方式:
- 类/对象中 可以访问 使用_ _成员名访问
- 类外/对象外 不可以访问 无
- 子类中 不可以访问 无
-
-
受保护的封装 protected
-
受保护的封装是将对象成员进行一定级别的封装,封装之后,在类中或者子类中都可以正常访问,但是无法在类外部正常访问
-
封装方法: 在成员名称前添加_即可(1个下划线)
例如:money 受保护的封装 _money 注意:在Python封装时依旧采用name mangling方式实现,正常情况下使用成员名无法在类外访问,但是通过 添加_也可以访问
-
访问限制及方式:
- 类/对象中 可以访问 使用_成员名访问
- 类外/对象外 不可以访问 无(理论上也可以使用_成员名访问)
- 子类中 可以访问 使用_成员名访问
-
-
公开的,公共的封装
-
公共的封装实际上对成员没有任何的操作,可以在类中,类外,及子类中都可以访问
封装方法: 不做任何操作 例如: sex 公开的 还是sex
-
访问限制及方式:
- 类/对象中 可以访问 使用原有名称
- 类外/对象外 可以访问 使用原有名称
- 子类中 可以访问 使用原有名称
-