python基础15 ---面像对象的程序设计

面向对象的程序设计

一、面向对象的程序设计简介

  1、面向对象程序设计的由来。

    我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设计

      好了的流程只能满足一个程序后期的可扩展性差,所以为了解决面向过程的程序可扩展性差的缺点,产生了面向对象的程序。他是解决了

      面向过程中可扩展性差的问题,如果程序需要扩展就可以对需要扩展的某个对象单独进行修改,就会立刻反映到整个程序体系中,不需要

      牵一发而动全身。

    注释:像操作系统的开机流程,他就相当于一个面向过程的程序,一步一步设计好了的,但是像我们玩的王者荣耀中的英雄人物,他们就是一

       个面向对象的程序,因为某个英雄要添加新的技能时就可以在这个英雄的对象里面添加。

  2、面向对象程序的优缺点。

    1.优点:解决了程序的可扩展性,对某一程序对象的单独修改就可以立刻反应到整个体系中,一般应用于程序变动需求比较大的软件中,比较

        游戏,人物的特征与技能都是面向对象程序大展身手的好地方。

    2.缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的

        交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死

        3个人,这个游戏就失去平衡。

二、类和对象

  1、对象和类的定义

    在英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特征与技能的结合体就一个对象。

    在一组对象中,从他们的特性和技能中提取共有的内容就是类,类是相同特征和技能的结合体。

  2、python中对象和类的表示方式。

    在python中,用变量表示特征,用函数表示技能,因而类是变量与函数的结合体,对象是变量与方法(指向类的函数)的结合体

三、类简介

  1、创建一个类。

    class 类名:

        '类的文档字符串' #相当于定义了个变量(特性)也可以是字符串,统称为类的数据部分。

         类体#相当于定义了个函数(技能),统称为类的函数部分。

  2、类的作用。

    1.作用1是属性引用(引用=增删改查):

      1.1引用类的数据属性,该属性与所有对象/实例共享。

        格式为:类名.变量名(类中定义的变量的变量名)#可通过print(类名.变量名)来查看相对应的值

      1.2引用类的函数属性,该属性与所有对象/实例共享。

        格式为:类名.函数(类中定义的函数)#可通过print(类名.函数)来查看相对应的值

      1.3删除类的属性

        格式为 :del 类名.变量名(类中定义的函数)

      1.4增加类的属性

        格式为 :类名.需要增加的变量名=‘ 字符串’

     2.作用2是实例化(__init__与self)

       2.1.类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征。

       2.2.self的作用是在实例化时自动将对象/实例本身传给__init__的第一个参数,self可以是任意名字,但是瞎几把写别人就看不懂了。

  3、查看一个类。

    1.格式:dir(类名)#查出的是一个名字列表

    2.格式:类名.__dict__#查出的是一个字典,key为属性名,value为属性值

四、对象简介

  1、对象是关于类而实际存在的一个例子,先有类再有对象。

  2、对象/实例只有一种作用:属性引用

  3、对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象

    同一个类的方法绑定到不同的对象上,属于不同的方法,内存地址都不会一样。

五、 类名称空间与对象/实例名称空间

   1、创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

   2、类有两种属性:数据属性和函数属性其中类的数据属性是共享给所有对象的而类的函数属性是绑定到所有对象的:

   3、创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性。在obj.name会先从obj自己的名称空间里找

    name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常

 

posted @ 2017-06-29 17:09  mx轩  阅读(220)  评论(0编辑  收藏  举报