day22面向对象
面向对象编程:
1.什么是面向对象
面向过程(编程思想):
过程,解决问题的步骤,流程即第一步做什么,第二步做什么
将复杂问题,拆成若干小问题,按照步骤一一解决,将复杂问题流程化(为其制定固定的实现流程)简单化
面向过程编程优缺点:
优点:复杂问题简单化
缺点:由于其实现流程固定,一旦中间某一流程发生了修改,将导致整体都需要修改,
牵一发动全身,扩展性差,维护性差
例如工厂里的流水线,第一个步骤未完成,第二个步骤做不了
使用场景:
对扩展性要求较低,比如说操作系统内核,脚本程序(运维工程师写的程序,其目的就是安装一堆软件),apache HTTP 开源软件公司
当我们要开发的程序,需要高扩展性时,就不能再使用该方式了,比如说QQ,经常会增加新功能
面向对象(编程思想):
OOP,面向对象的缩写 object,oriented programming编程
将程序看做是一堆对象的集合,实现功能的方式就是对象之间的交互
什么是对象(实际存在)
一切皆对象
对象具备某些特征与技能的结合体
什么是类(抽象概念)
类型,类别,
是根据一些具备相同特征和技能的对象抽取得到的,比如说人类
类和对象之间的关系
类包含一系列相同特征和技能的对象
对象属于某个类的实例
在生活中是先有对象再根据对象的特征和技能,得到一个类
在程序中,先定义类,后创建对象
要先确定对象具备什么特征和行为才能产生对象
2.为什么要使用面向对象
优点,解决了程序的扩展性,各个对象之间的耦合度低,维护性高
缺点:面向对象的复杂度比面向过程稿, 无法预知执行结果
应用场景:需要经常变化的软件(直接与用户交互的程序)
对于不需要扩展的程序而言,使用面向对象反而增加了难度
3.面向对象与面向过程的区别
4.类与对象
类名,大驼峰
类中用变量来描述特征,用函数表示技能
通过调用类,得到对象,实例化
obj = Person()
每个对象的内存地址是不同的,在创建对象是,计算机会申请一个新的内存地址,并向对象中的内容存进去
存放属性的位置有两个,一个是类中,还有一个是对象中
当每个对象的某个特征都相同时放到类中
当每个对象的特征都不同时放到对象中
如果对象中存在这个属性,优先访问对象中的属性
查找顺序为,对象 》》类
当创建类的时候,会产生一个类的名称空间,存放类中的名称和值的内存地址的绑订关系
当创建对象的时候,会产生对象的名称空间,存放对象中的名称 和 值的内存地址的绑订关系
定义一个空类,类中也存在一些自带的属性,是从父类得到的
__dict__可以获取一个对象中包含的内容
初始化函数:
__开头__结尾的函数,是内置函数,在满足某种条件时会自动触发
__init__会在调用类时自动执行
self 表示要进行初始化的对象,系统会自动传值
用于初始化对象,它会在创建对象时,自动执行,并传入调用类时传递的参数,第一个参数表示要初始化的对象本身
绑定方法:
绑定到对象的方法,绑定到类的方法(classmethod),非绑定方法(静态方法staticmethod)
绑定给对象的方法,对象来调用时,自动将对象当做第一个参数传给方法
类来调用时,当做调用普通函数,该传几个值就传几个值
绑定到类的方法,类和对象调用方式一样,类来调用时会将类自动传给方法的第一个参数
非绑定方法,即不绑定给类也不绑定给对象,谁都可以调用
day22面向对象的更多相关文章
- day22面向对象编程思想
day22面向对象编程思想 1.面向过程 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来分步骤解决问题的 面向对象: 核 ...
- day22 面向对象
面向对象 ''''1.面向过程编程 核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 ...
- day22.面向对象初识
1.面向对象引入 先来创建一个小游戏:人狗大战 # 定义一个狗 def Gog(name,blood,aggr,kind): dog = { 'name':name, 'blood':blood, ' ...
- day22 面向对象基础
1.什么是面向过程 在介绍面向对象之前,要先明确面向过程 在这之前我们所写的任何代码都是面向过程的 什么是面向过程? 是一种编程思想 面对 朝向 在编写代码时,要时刻想着过程这两个字 过程指的是什么? ...
- day22:面向对象封装对象操作&类操作&面向对象删除操作
面向对象程序开发 1.类的三种定义方式 class MyClass: pass class MyClass(): #(推荐) pass class MyClass(object): # object类 ...
- python学习day22 面向对象(四) 约束&反射
1.栈与队列 栈:类似弹夹,先进后出 队列:类似水管,先进先出 class Stack(object): """ 先进后出 """ def ...
- day 25 udp, socketserver
建立UDP连接的示例: # server端 import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1', ...
- 22期老男孩Ptython全栈架构师视频教程
老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...
- day22 02 面向对象的交互
day22 02 面向对象的交互 一.三种编程方式 1.面向过程编程:核心是过程,流水线式思维 优点:极大降低了写程序的复杂程度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就用来解 ...
随机推荐
- [題解]luogu_P1333瑞瑞的木棍(并查集/圖論)
是一道歐拉路的題竟然沒看出來...... 把每種顏色看成一個點,每根木棍看成一個邊,即相同顏色在圖中接好合併成了一個點, 問題轉化為了求是否存在歐拉路 如果用map會超時,所以可以用字典樹實現離散化/ ...
- CSS入门使用
声明标签 HTML <!DOCTYPE> 内链样式表 <body style="background-color:green;margin:0;padding:0;&quo ...
- Memcached 未授权访问漏洞及加固
memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问. 漏 ...
- springmvc 实现原理与struts2原理的区别
spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. spring mvc是基于方法的设计,sturts2是基于类设计的. springmvc将ur ...
- ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...
- 从零开始利用vue-cli搭建简单音乐网站(三)
1.利用router-link在组件之间传递数据 如上图,MainPage.vue中主要有8个推荐曲目数据,主要实现方式是建立好主页面模板,然后用v-for循环获取返回的music对象,然后分别绑定曲 ...
- sqlite的应用
对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.下面就向大家介绍一下SQLite常用的操作方法.本篇文章主要用到SQLiteDataba ...
- 洛谷 First Step (ファーストステップ) 3月月赛T1
题目背景 知らないことばかりなにもかもが(どうしたらいいの?) 一切的一切 尽是充满了未知数(该如何是好) それでも期待で足が軽いよ(ジャンプだ!) 但我仍因满怀期待而步伐轻盈(起跳吧!) 温度差なん ...
- openstack 存储节点按照报错Device /dev/sdb not found (or ignored by filtering).
root@dell-PowerEdge-T30:~# pvcreate /dev/sdb Device /dev/sdb not found (or ignored by filtering).首页 ...
- (转)MyBatis框架的学习(一)——MyBatis介绍
http://blog.csdn.net/yerenyuan_pku/article/details/71699343 MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2 ...