码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2018-12-13 19:22:57      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:它的   软件   传参   扩展   需求   内存   情况   相互   不同   

面向过程:核心是过程二字,过程指的是解决问题的步骤,类似流水线,机械的思维方式

优点:复杂的问题流程化,进而简单化

缺点:一次只能解决一个问题

应用场景:对扩展性要求较低的软件,如系统内核,脚本程序

面向对象:一切皆对象,对象指的是具有某些属性与行为的结合体,是客观存在,是类的具现化

面向过程的方式:

有条不紊的解决问题

面向对象的方式:

生成对象由对象解决问题

面向对象:

  优点:不必考虑实现方式

  可扩展性提高

  各对象之间耦合度低,不会相互产生影响

  可维护性高

缺点:面向对象的复杂度比面向过程高

  无法预知执行结果

使用场景:需要较高的扩展性时,直接与用户交互的程序,

面向对象编程的本质:使用不同的对象完成程序

类:类型类别,一个抽象概念,类是根据相似属性与行为的对象抽象

类包含一系列相同特征和技能的对象

对象是类的实例

生活中先有对象,抽象对象得到类

程序中先有类,根据类再创建对象

类的命名方式:大驼峰体,即每个单词的首字母大写

通过类创建对象时,每个对象的内存地址不同,创建对象,计算机会申请一个新的内存空间来存放它的内容

存储属性的位置有两个,类中,对象中

当每个对象的某个特征都相同时放到类中

当特征不同时放到对象中

可以通过__dict__获取一个对象包含的内容

属性的访问顺序:

当对象不存在时,会到类中寻找

如果对象存在这个属性时优先访问对象中的属性

创建一个类,会产生名称空间,存储类中名称和值的绑定关系

创建一个对象时,产生名称空间存储对象中名称与值的绑定关系

类可以作为对象的模板,所有属于同一个类的对象,都具备类中的公共内容

即使类中什么都没有,也存在一些从父类object中继承自带的属性,

类的初始化函数:__init__(self),该函数会在调用类时自动执行,self参数必须有,表示要进行初始化的对象,系统会自动传值

绑定方法:将对象与函数进行绑定

对象本质是一种存放数据的容器,函数就是用于处理数据的代码

默认情况下:类中定义的函数都是绑定方法,共同点是,都会将对象作为第一个参数self

当用对象调用类中的方法时,默认将对象传入方法中

而用类名调用时,需要手动传入对象

绑定方法分为两种,绑定给对象与绑定给类

绑定给类的方法使用一种为classmethod的装饰器,必须有一个参数

对象绑定方法:可以使用对象来调用,也可以使用类名来调用

在对象调用时会自动传入参数为对象本身

类调用时不会自动传参

类的绑定方法:对象与类都可以调用,并且自动传参

如何定义对象绑定方法与类的绑定方法:

调用的区别,当要处理的数据包含在类中时,就应该绑定给类

当要处理的数据包含对象中的属性时就应该绑定给对象

类的绑定方法与对象的绑定方法的相同与不同:

相同点:

  都会自动传值

  都可以被类和对象调用

不同点:

  对象绑定方法在对象调用时,传递的参数为对象本身,而类绑定方法自动传的是类

  第一个参数分别为:cls self

为什么要绑定?

传递参数必须手动传递有可能传参顺序发生错误

每次处理数据都需要手动传参

当腰处理的数据非常多,就不能再定义为变量,你可以使用列表来存储要处理的数据

之所以绑定,简化代码提高效率

非绑定方法:

在类中,即不绑定类也不绑定对象的方法

特点:没有自动传参的效果,类和对象都能调用,就是一个普通函数

当没有访问类和对象的数据的需求时,就可以作为一个非绑定方法

使用场景较少

面向对象

标签:它的   软件   传参   扩展   需求   内存   情况   相互   不同   

原文地址:https://www.cnblogs.com/suncunxu/p/10115283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!