pythonday15

栏目: 后端 · 前端 · 发布时间: 6年前

内容简介:一, 浅谈面向对象1.面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。

一, 浅谈面向对象

1.面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向

过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。

   优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

   缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

2. 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自己

当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。面向对象

的程序设计好比如来设计西游记,如来要解决的问题是把经书传给东土大唐,如来想

了想解决这个问题需要四个人:唐僧,沙和尚,猪八戒,孙悟空,每个人都有各自的

特征和技能(这就是对象的概念,特征和技能分别对应对象的属性和方法),然而这

并不好玩,于是如来又安排了一群妖魔鬼怪,为了防止师徒四人在取经路上被搞死,

又安排了一群神仙保驾护航,这些都是对象。然后取经开始,师徒四人与妖魔鬼怪神

仙互相缠斗着直到最后取得真经。如来根本不会管师徒四人按照什么流程去取。

3. 面向对象的程序设计:

优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,

如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处

理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝

也无法预测最终结果。于是我们经常看到一个游戏人物某一参数的修改极有可能导致阴

霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

4. 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率,

另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变

得更从容。

了解一些名词:类、对象、实例、实例化

类:具有相同特征的一类事物(人、狗、老虎)

对象/实例:具体的某一个事物(隔壁阿花、楼下旺财)

实例化:类——>对象的过程(这在生活中表现的不明显,我们在后面再慢慢解释)

二, 类的相关知识

1. 声明

        def functionName(args):
             '函数文档字符串'
              函数体 


        '''
        class 类名:
            '类的文档字符串'
            类体
        '''

        #我们创建一个类
        class Data:
            pass

2. 属性

        class Person:   #定义一个人类
            role = 'person'  #人的角色属性都是人
            def walk(self):  #人都可以走路,也就是有一个走路方法
                print("person is walking...")


        print(Person.role)  #查看人的role属性
        print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

3. 实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实

例定制自己的特征

        class Person:   #定义一个人类
            role = 'person'  #人的角色属性都是人
            def __init__(self,name):
                self.name = name  # 每一个角色都有自己的昵称;
        
            def walk(self):  #人都可以走路,也就是有一个走路方法
                print("person is walking...")


        print(Person.role)  #查看人的role属性
        print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

4. 实例化的过程就是类——>对象的过程

原本我们只有一个Person类,在这个过程中,产生了一个egg对象,有自己具体的名字,

攻击力和生命值。

语法:对象名 = 类名(参数)

self

self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别

的名字,但是正常人都不会这么做,因为你瞎改别人就不认识.

5. 类属性的补充

        一:我们定义的类的属性到底存到哪里了?有两种方式查看
        dir(类名):查出的是一个名字列表
        类名.__dict__:查出的是一个字典,key为属性名,value为属性值

        二:特殊的类属性
        类名.__name__# 类的名字(字符串)
        类名.__doc__# 类的文档字符串
        类名.__base__# 类的第一个父类(在讲继承时会讲)
        类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
        类名.__dict__# 类的字典属性
        类名.__module__# 类定义所在的模块
        类名.__class__# 实例对应的类(仅新式类中)

三, 对象的相关知识

        class 类名:
            def __init__(self,参数1,参数2):
                self.对象的属性1 = 参数1
                self.对象的属性2 = 参数2

            def 方法名(self):pass

            def 方法名2(self):pass

        对象名 = 类名(1,2)  #对象就是实例,代表一个具体的东西
                          #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
                          #括号里传参数,参数不需要传self,其他与init中的形参一一对应
                          #结果返回一个对象
        对象名.对象的属性1   #查看对象的属性,直接用 对象名.属性名 即可
        对象名.方法名()     #调用类中的方法,直接用 对象名.方法名() 即可
        class Lian:
            liupai='四一分推'
            jinggongxing='稳健'
            tuanzuoyong='抗切保'
            def __init__(self,name,jiNeng,shuxing):
                self.name=name
                self.jiNeng=jiNeng
                self.shuxing=shuxing
                print('压制')
            def gongNeng(self):
                print('抗压')
       
         #从类名的角度操作类中的静态变量
        Lian.rouTan='控制'            #增
        Lian.tuanzuoyong='抗切控'      #改
        del Lian.rouTan                 #删
        print(Lian.__dict__)            #查(查看类中所有信息)
        print(Lian.__dict__['liupai'])  #查看类中某一属性信息
     
       #从类名的角度操作类中的方法(除特殊方法外基本不用)
        Lian.gongNeng('大树')
       
         #从对象的角度
        tel=Lian('诺克','断头台','战士')    #生成对象
        tel.zhuangBei='黑切'                #增
        tel.zhuangBei='黑切,三项'            #改
        print(tel.__dict__)                    #查
        print(tel.shuxing)                    #查某一属性
       
        #(注意:也可以删除,本段函数并未展示)
       
         print(tel.gongNeng())  

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript & jQuery

JavaScript & jQuery

David Sawyer McFarland / O Reilly / 2011-10-28 / USD 39.99

You don't need programming experience to add interactive and visual effects to your web pages with JavaScript. This Missing Manual shows you how the jQuery library makes JavaScript programming fun, ea......一起来看看 《JavaScript & jQuery》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具