ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python】 面向对象编程 特征:封装、继承和多态。

2022-01-28 16:28:09  阅读:127  来源: 互联网

标签:封装 变量 Python 多态 对象 实例 面向对象编程 方法 函数


面向对象

  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。   
    •   比如:数字、字符、列表、元组、字典、函数等
    •   对象的类型:数字类型、字符类型等(type函数查看对象的数据类型)
    •   数字、字符、元组是不可改变值的对象
    •   对象的特征也称为属性,比如长度等
  • 方法:类中定义的函数叫做方法,没在类中定义的叫函数
  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
    •   也是一种对象,是用来创建对象的对象(id函数识别对象在内存中的地址)
    •   对象所具有的行为也可以称作方法,比如对字符串进行拆分、方法的本质是函数
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。(把用类创建对象的过程称为实例化)
  • 模块:只一整个.py文件中的类、函数等

 

封装

  什么是封装:封装是指将数据与具体操作的实现代码放在某个对象内部,就是将类或者是函数中的某些属性限制在某个区域之内,外界只能通过接口使用该对象,无法直接调用。

  封装数据的主要原因是:保护隐私 (不能直接调用、修改对象内部的私有信息)

  封装方法的主要原因是:隔离复杂度  (能隐藏对象实现细节,使代码更易维护)

 

  拓展:

    1、类通过将函数和变量封装在内部,实现了比函数更高一级的封装

    2、在编程语言里,对外提供的接口(接口可理解为了一个入口),就是函数,称为接口函数,这与接口的概念还不一样,接口代表一组接口函数的集合体。

  

  封装的两个层面:

    1、第一种(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装。

      

    2、第二种(定义私有化) : 类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。

      提示:

        Python中私有化的方法也比较简单,即在准备私有化的属性(包括方法、数据)名字前面加两个下划线即可。

        类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式:

 

继承:

  继承:子类需要重用父类的属性和方法,子类中也可以定义自己的属性和方法。

    通过继承创建的新类称为子类派生类,被继承的类称为基类父类超类

  python继承的优点:

    实现代码复用,减少代码量;

    拥有父类的所有功能,只需要编写子类附加的功能即可。

 

 

 

多态:

 多态:以封装和继承为前提,不同的子类对象调用相同的方法,产生不同的执行结果

 

标签:封装,变量,Python,多态,对象,实例,面向对象编程,方法,函数
来源: https://www.cnblogs.com/phoenixy/p/15545419.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有