• Python中面向对象编程和内置方法的使用解析【转】


    一、面向对象的思想

    面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。

    这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。

    二、面向过程和面向对象的区别和特性

    1.面向过程(结构化程序设计)

    采用自顶向下、分而治之的方法,将整个程序按功能划分为几个可独立编程的子过程模块,每一子模块完成指定的子任务,主过程通过调用各子过程完来成全部处理工作 。

    2.面向对象的程序设计(Object-Oriented Programming)

    面向对象的程序设计方法强调直接以现实世界中的物体为中心来思考和认识问题,并按照这些事物的本质特征把它们抽象为类。采用数据抽象和数据隐藏,类之间互相交互,共同构成大型的面向对象基础。

    3.面向对象的相关概念

    1)类(Class):具有相似属性和行为的一组对象,就称为类。可见,有了类的概念以后,就可以对具有共同特征的事物进行统一描述;

    2)对象(Object):类的实例,每个对象都具有属性和方法这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。;

    3)封装(Encapsulation):封装把对象的属性和方法看成了一个密不可分的整体,从而使对象能够完整地描述并对应于一个具体事物 ;

    4)继承(Inheritance):在面向对象的程序设计中,允许在已有类的基础上通过增加新特征而派生出新的类,这称为继承。其原有的类称为基类(base class),而新建立的类称为派生类(derived class);

    5)消息(Message):当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。所谓消息就是调用一个对象所提供的方法;

    6)多态性(Polymorphism):多态性是面向对象的一个重要特征。多态有两种,静态的和动态的。在通过继承而派生出的一系列类中,可能存在一些名称相同,但实现过程和功能不同的方法(Method)。 当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。

    4.面向对象编程的特点

    1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响;

    2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承;

    3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。

    5.设计了良好的OOP系统具有的特性

    1)可维护性:软件在投入使用的过程中,随着运行时间的延长,后期可能就不符合客户的需求了,我们就需要对软件进行修改。后期维护的人员初期可能没有参与到软件的开发中,对软件的结构是不熟悉的。那OOP系统就能保证后期的维护比较方便,比较简单;

    2)可扩展性:在软件运行后期我们需要对软件新增一些功能的时候,不需要对软件的架构进行大的更改就能非常方便的增加一些功能;

    3)可复用性:我们在这一个项目中使用的一些代码和类,模块可以很容易的拿到另外一个项目中去使用;

    4)健壮性:软件要比较稳定,出错的几率比较小。

    6.二者比较

    1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难;

    2)面向对象程序设计方法中,对象所具有的封装性和继承性使得代码重用成为可能,并大大减少了程序出错的可能性;

    3)面向对象方法吸收了结构化程序设计方法的优点,同时引入了新概念、新机制并建立了比传统方法更高层次的抽象。面向对象内部也包含了面向过程,比如我们在设计类中的一个方法时,我们就会采用面向过程的一些原则,一些思想等等…….

    了解完这些,我们就来初步学习面向对象编程

    结构:

    class 类名():

    def 方法1(self,参数列表):

    pass

    def 方法2():

    pass

    当一个类定义完成后,用这个类来创建对象,格式为:

    对象变量 = 类名()

    这里写图片描述

    结果显示:

    这里写图片描述

    python 中常用内置方法:

    __new__(cls,[...])

    __new__是对象实例化时第一个调用的方法,它只取下cls参数,并把这个参数传给__init__.

    这里写图片描述

    __init__是对象的内置方法,是专门用来定义一个类具有哪些属性的方法,是对象的初始化方法

    __del__,当对象从内存中销毁时,会调用__del__方法

    这里写图片描述

    结果所示:

    这里写图片描述
    这里写图片描述
    这里写图片描述

    __str__方法:在开发时,一般情况下print 对象名会输出对象的内存地址,而__str__方法就是打印自定义的内容

    这里写图片描述
    这里写图片描述
  • 相关阅读:
    洛谷 P2634 BZOJ 2152 【模板】点分治(聪聪可可)
    洛谷 P3819 松江1843路
    洛谷 P1005 矩阵取数游戏
    洛谷 P2712 摄像头
    洛谷 P2774 方格取数问题
    洛谷 P3369 BZOJ 3224 【模板】普通平衡树(Treap/SBT)
    洛谷 P2805 BZOJ 1565 植物大战僵尸
    洛谷 P2312 解方程
    洛谷 P3355 骑士共存问题
    洛谷 P2762 太空飞行计划问题
  • 原文地址:https://www.cnblogs.com/gabrielle/p/9697967.html
Copyright © 2020-2023  润新知