Python面向对象(三)

2021-01-12 00:00:00 方法 属性 私有 继承 访问

Python面向对象(二)

人丑就得多读书:Python面向对象(二)zhuanlan.zhihu.com

重点:类的封装

什么是封装?

  • 封装:对属性和方法的抽象、隔离和保护;属性-变量;方法-函数
  • 属性:私有属性和公开属性。私有属性:只能在类内部访问。公有属性:通过类/对象名访问。
  • 方法:私有方法和公有方法。私有方法:只能在类内部使用。公开方法:可以通过类/对象名访问。
  • 属性封装按两个维度,分为以下四种属性;
  • 公开类属性--->类属性:在类空间定义的属性
  • 私有类属性:仅供当前类访问的类属性,子类不能访问,私有类属性名开始需要有两个下划线,如__count---------->只能在类的内部被方法所访问,不能通过<类名/对象名>.<属性名>方式访问,利用方法中返回值的方法访问。这种方法的好处在于:可以在getCount()方法中判断访问的有效性、可以对访问次数进行计数......
  • 公开实例属性:即实例属性,需要self.xxx来定义的属性
  • 私有实例属性:属性名前加两下划线
  • 小结:私有属性仅供类内部使用,可以对其进行保护,然而仅仅是形式上的保护

双下划线方法只是一种转换约定,转换后,类内原有名字发生了变化,是形式上的私有。通过如上的方式仍然可以访问私有属性。----->可以换个名字再访问

私有方法和公开方法

  • 私有方法:只在类内部公开使用的方法,同样是名字前加两个下划线
  • 同样也是形式上的私有,程序员逻辑而非安全逻辑,体现了python重视约定的理念

类的保留属性

  • 特殊属性,双下划线开头和结尾
  • 仅用类名访问的保留属性:
  • 其他保留属性-->类名/对象名访问
  • <类/对象>.__dict__返回对应成员的字典

类的保留方法

  • python预留了保留方法的接口,但没有规定具体的保留方法逻辑,保留方法的逻辑需要程序员编写
  • 对应比较操作的保留方法

------------------------->>>>python类的继承

继承的理解

  • 继承:代码复用的抽象,是新定义类能够几乎完全使用原有类属性与方法的过程
  • 多级别继承:超类、父类、子类
  • 多继承:派生类继承于多个基类

类继承的构建

  • 定义继承

基类名可以带有路径:ModuleName.BaseClassName

  • 派生类可以直接使用基类的属性和方法;使用基类的类方法和类属性时,要用基类的类名调用
  • 继承关系的判断
  • 派生类只能继承基类的公开属性和方法,不能继承基类的私有属性和私有方法

P21 00:00:00

相关文章