面向对象编程:

1.什么是面向对象

面向过程(编程思想):

过程,解决问题的步骤,流程即第一步做什么,第二步做什么

将复杂问题,拆成若干小问题,按照步骤一一解决,将复杂问题流程化(为其制定固定的实现流程)简单化

面向过程编程优缺点:

优点:复杂问题简单化

缺点:由于其实现流程固定,一旦中间某一流程发生了修改,将导致整体都需要修改,

牵一发动全身,扩展性差,维护性差

例如工厂里的流水线,第一个步骤未完成,第二个步骤做不了

使用场景:

对扩展性要求较低,比如说操作系统内核,脚本程序(运维工程师写的程序,其目的就是安装一堆软件),apache HTTP 开源软件公司

当我们要开发的程序,需要高扩展性时,就不能再使用该方式了,比如说QQ,经常会增加新功能

面向对象(编程思想):

OOP,面向对象的缩写 object,oriented programming编程

将程序看做是一堆对象的集合,实现功能的方式就是对象之间的交互

什么是对象(实际存在)

一切皆对象

对象具备某些特征与技能的结合体

什么是类(抽象概念)

类型,类别,

是根据一些具备相同特征和技能的对象抽取得到的,比如说人类

类和对象之间的关系

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

对象属于某个类的实例

在生活中是先有对象再根据对象的特征和技能,得到一个类

在程序中,先定义类,后创建对象

要先确定对象具备什么特征和行为才能产生对象

2.为什么要使用面向对象

优点,解决了程序的扩展性,各个对象之间的耦合度低,维护性高

缺点:面向对象的复杂度比面向过程稿, 无法预知执行结果

应用场景:需要经常变化的软件(直接与用户交互的程序)

对于不需要扩展的程序而言,使用面向对象反而增加了难度

3.面向对象与面向过程的区别

4.类与对象

类名,大驼峰

类中用变量来描述特征,用函数表示技能

通过调用类,得到对象,实例化

obj = Person()

每个对象的内存地址是不同的,在创建对象是,计算机会申请一个新的内存地址,并向对象中的内容存进去

存放属性的位置有两个,一个是类中,还有一个是对象中

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

当每个对象的特征都不同时放到对象中

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

查找顺序为,对象 》》类

当创建类的时候,会产生一个类的名称空间,存放类中的名称和值的内存地址的绑订关系

当创建对象的时候,会产生对象的名称空间,存放对象中的名称 和 值的内存地址的绑订关系

定义一个空类,类中也存在一些自带的属性,是从父类得到的

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

初始化函数:

__开头__结尾的函数,是内置函数,在满足某种条件时会自动触发
__init__会在调用类时自动执行
self 表示要进行初始化的对象,系统会自动传值
用于初始化对象,它会在创建对象时,自动执行,并传入调用类时传递的参数,第一个参数表示要初始化的对象本身

绑定方法:

绑定到对象的方法,绑定到类的方法(classmethod),非绑定方法(静态方法staticmethod)

绑定给对象的方法,对象来调用时,自动将对象当做第一个参数传给方法

类来调用时,当做调用普通函数,该传几个值就传几个值

绑定到类的方法,类和对象调用方式一样,类来调用时会将类自动传给方法的第一个参数

非绑定方法,即不绑定给类也不绑定给对象,谁都可以调用

day22面向对象的更多相关文章

  1. day22面向对象编程思想

    day22面向对象编程思想 1.面向过程 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来分步骤解决问题的 面向对象: 核 ...

  2. day22 面向对象

    面向对象 ''''1.面向过程编程   核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么   基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式​   ...

  3. day22.面向对象初识

    1.面向对象引入 先来创建一个小游戏:人狗大战 # 定义一个狗 def Gog(name,blood,aggr,kind): dog = { 'name':name, 'blood':blood, ' ...

  4. day22 面向对象基础

    1.什么是面向过程 在介绍面向对象之前,要先明确面向过程 在这之前我们所写的任何代码都是面向过程的 什么是面向过程? 是一种编程思想 面对 朝向 在编写代码时,要时刻想着过程这两个字 过程指的是什么? ...

  5. day22:面向对象封装对象操作&类操作&面向对象删除操作

    面向对象程序开发 1.类的三种定义方式 class MyClass: pass class MyClass(): #(推荐) pass class MyClass(object): # object类 ...

  6. python学习day22 面向对象(四) 约束&反射

    1.栈与队列 栈:类似弹夹,先进后出 队列:类似水管,先进先出 class Stack(object): """ 先进后出 """ def ...

  7. day 25 udp, socketserver

    建立UDP连接的示例: # server端 import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1', ...

  8. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  9. day22 02 面向对象的交互

    day22 02 面向对象的交互 一.三种编程方式 1.面向过程编程:核心是过程,流水线式思维 优点:极大降低了写程序的复杂程度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就用来解 ...

随机推荐

  1. 在centos7下搭建nginx环境,并配置负载均衡,最终能达到通过域名直接访问的目的

    1.关于nginx:个人理解的nginx它的主要用途就是负载均衡,当然可能还有其他一些功能可能我们不长用到,我们通过nginx可以干什么呢?为什么要引入它呢?原因是当有高并发访问服务器时,服务器可能会 ...

  2. python使用C扩展

    CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/C API.每 ...

  3. Codeforces Round #547 (Div. 3) B.Maximal Continuous Rest

    链接:https://codeforces.com/contest/1141/problem/B 题意: 给n个数,0代表工作,1代表休息,求能连续最大的休息长度. 可以连接首尾. 思路: 求普通连续 ...

  4. [LOJ#10042] 收集雪花

    题目链接: 点我 题目分析: 双指针扫描可以保证在\(O(n)\)的时间复杂度内处理这道题.另外,虽然这个题标签是\(hash\),但是字符串\(hash\)是可以卡掉的,所以建议直接离散化. 维护两 ...

  5. python之模块random,time,os,sys,序列化模块(json,pickle),collection

    引入:什么是模块:   一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类型. 1.使用python编写的代码(.py ...

  6. 转 PHP界面显示中文乱码

    D:\wamp64\trainning\testD:\wamp64\www\practice php 页面前端显示乱码 在写一个表单提交的项目中,遇到了PHP界面输出无法显示中文界面. 后来查阅相关资 ...

  7. GDB 格式化结构体输出

    转载:http://blog.csdn.net/unix21/article/details/9991925 set print addressset print address on打开地址输出,当 ...

  8. Eclipse集成Maven环境(出现jar的解析或者缺失问题)(或者出现Invalid classpath publish/export dependency /common. Project entries not supported)的统一整理

    在正确配置完Maven,和Maven IntegrationFor Eclipse之后,新建了一个Maven Project 和一个Maven Module,发现新建的Module项目下的pom.xm ...

  9. 洛谷 P1873 砍树

    砍树 二分答案,难度较低. #include <iostream> #include <cstdio> #include <algorithm> using nam ...

  10. sublime前端插件以及常用快捷键

    29个常用 Sublime Text 插件推荐 来源:互联网 作者:佚名 时间:06-18 09:27:55 [大 中 小] Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,P ...