类的三大特性 之 封装
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支持
- 公有的