面向对向---封装
类的三大特性 之 封装
-
super
-
在py3中怎样用?在py2(新式类/经典类)中怎样用
- 在py3中super().func()
- 在py2中新式类super(子类的名字,子类的对象).函数名()
- 在py2中经典类中super().func()
-
在单继承中执行父类的同名方法的时候怎么用?
- 用法:super().func()
- 在单继承的时候就是找父类
-
super方法和mro方法的关系是什么
- super是按照mro顺序来寻找当前类的下一个类
-
-
封装
-
广义上的封装
- 把属性和方法装起来,在外部不能直接调,需要通过类名的方式调用
-
狭义上的封装
- 把属性和方法藏起来,在外部不能调用,只能在内部偷偷调用
-
使用私有的三种情况
- 不想让你看也不想让你改
- 可以让你看但不让你改
- 可以看也可以改,但是要求你按照我的规则改
-
封装的语法
- 私有的静态变量
- 私有的实例变量
- 私有的绑定方法
-
私有的特点
- 私有的可以在内部使用
- 私有的不能在外部使用
- 私有的也不可以在子类中使用
-
原理
-
私有在内部是如何变形的?
- 在类的内部使用的时候,自动把当前这句话所在的类的名字拼在私有变量前完成变形
class User: __Country = 'China' __Role = '法师' def func(self): print(self.__Country)#在内部调用的时候会自动帮你加上类名 (_User__Country) print(User.__Country)在类的外部调不到是因为python没有自动为你加_User
-
私有在哪里定义的时候变形
- 当你在类内部调用私有类的时候就会发生变化
-
-
-
类中变量的级别,那些是python支持的,那些是python不支持
- 公有的
- public 公有的 类内类外都能用,父类子类都能用 python支持
- 保护的
- protect 保护的 类内能用,父类子类都能用,类外不能用 python不支持
- 私有的
- private 私有的 本类的类内部能用,其他地方都不能用 python支持
- 公有的