面向对象

1.什么是面向对象

(图片来自网络)

哈哈,当然不是图中的意思。

1).面向对象(Object Oriented,OO)是软件开发方法。利用各大搜索引擎得到的解释都太官方,完全看不懂啥意思对吧?那么我的理解是这样:

在上一篇博文说到了装饰器的含义,给一个现有的程序添加新的功能,同时又不改变其结构,作为现有对象的一个包装修饰。那么其实被用于修饰的程序就是我们这篇文章主旨——面向对象里的对象;不管原程序内部在运行什么操作,装饰器只是对其修饰就行,这个理念就是面向对象里的封装;不改变其结构继续拥有原程序的功能就是面向对象的继承;添加新的功能最终组成一个功能丰富的程序,当新的程序调用时因为多功能对不同对象的不同行动就是面向对象里的多态(可能有些逻辑和概念上的小牵强,大体是没错的)

这里补一句,因为在这方面类的运用在企业里确实用的很多,本来直接就用类也很方便,所以装饰器基本很少用,但也不是说装饰器一无是处,各有特点。装饰器和面向对象都是面试必问问题

2).面向对象三要素:

封装信息隐蔽技术,对一个定义好的函数使用。

  • 隐藏实现方案的细节
  • 将代码和处理的数据绑定一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用

继承:子类继承父类特性

  • 一个对象获得另一个对象属性的过程,用于实现按层分类的概念
  • 一个深度继承的子类(派生类)继承了类层次中它的每个祖先(超类,基类,父类)的所有属性
  • 搜索顺序由下而上,由左至右

多态:不同对象对同一方法响应不同行动

  • 允许一个接口被多个通用的类动作使用的特性,具体使用那个动作与应用场合相关
  • 用于为一组相关的动作设计一个通用的接口,以降低程序复杂性

3).再看一个图,这次是认真的

(图片来自网络)

然后如果你没懂,不要紧,学完面向对象编程这一章你自然而然就懂了。还有我想说的是,面向对象本也不是一两句话就能解释清楚的。

2.面向对象有三个方向:

OOA:面向对象分析

OOB:面向对象设计

OOP:面向对象编程

对象(object)

1.什么是对象?

在python中,一切皆对象,就像在linux里一切皆文件一样。也就是说只要是python里的东西,全部都是对象。对象,就是抽象化的数据本身

2.对象的三部分:

  • 身份
  • 类型

3.对象的比较:

  • 身份比较:用于确定是否同一个对象—id()
  • 类型比较:用于确定是否同属于一个类型—type(),isinstance()
  • 值比较:值是否相同— ==

4.常用对象:

  • 数值
  • 字符串
  • 列表
  • 元组
  • 字典
  • 集合

5.对象=属性+方法

类(class)

1.什么是类:

将同一种具体事物的共同特性抽象出来的表现

2.类的特性:

  • 类是一种数据结构,可用于创建实例(一般情况,类封装了数据和对应的方法)
  • python的类是一个可调用对象,即类对象
  • python2.2之后,类是一种自定义类型(实例是声明某个自定义类型的变量)

3.类的关系:

  • 依赖:一个类的方法操纵另一个类的对象
  • 聚合:类A的对象包含类B的对象
  • 继承:描述特殊与一般关系

4.定义类的格式:

class 类名(类名首字母建议大写)

  code

例1:

定义的Temple就是类对象,而a作为类对象实际应用,是一个实例对象

例2:

class People():    

    #属性
    head=1  #一个头
    legs=2  #两条腿
    hands=2 #两只手    

    #方法
    def walk(self):
        print('走了一步')
    def seyhello(self):
        print('看见熟人打招呼')

调用结果:

其中,People就是类对象,yang就是实例对象,yang=People() 这句话把People实例化给yang

head,hand,legs就是类属性,而walk和seyhello就是类的方法(函数)

洗礼灵魂,修炼python(31)--面向对象编程(1)—面向对象,对象,类的了解的更多相关文章

  1. Python进阶 函数式编程和面向对象编程等

    函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...

  2. Python入门之面向对象编程(一)面向对象概念及优点

    概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...

  3. 浅谈Python中函数式编程、面向对象编程以及古怪的PythonIC

    1.函数式编程作为结构化编程的一种,正在受到越来越多的重视.那么什么事函数式编程呢? 在维基百科中给出了详细的定义,函数式编程又称泛函数编程,是一种编程规范,它将函数运算视为数学上的函数计算.简单的来 ...

  4. python 面向对象编程、获取对象信息

    面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...

  5. Python - 面向对象编程 - 什么是对象和类

    面向对象编程 Object Oriented Programming,简称 OOP,是一种程序设计思想 OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法 Python里面有一句话: ...

  6. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

  7. java面向对象编程——第四章 类和对象

    OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...

  8. PHP面向对象编程学习之对象基础

    php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...

  9. 04面向对象编程-01-创建对象 和 原型理解(prototype、__proto__)

    1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念 ...

  10. 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础

    1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...

随机推荐

  1. Python系列之环境安装

    Python可以实现强大的数据爬虫功能,并且数据分析与挖掘挺方便,也提供了大量的库,比如numpy, pands,matplotlib等.尤其,使用Python做机器学习也成了近年来的趋势,有人经常会 ...

  2. Base 64 加密、解密

    1.写一个公共类 package com.boyutec.oss.sys.utils; import java.io.UnsupportedEncodingException; import java ...

  3. 《JavaScript高级教程》学习笔记一、变量和数据类型

    JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript的伪语言的形式来定义的. 一.变量和数据类型 1. 变量 JavaSript是弱类型语言,可以通过var定义任何类型变 ...

  4. Java读取Properties的几种方法

    本文转载自:http://blog.csdn.net/chjttony/article/details/5927613 每次用完每次忘相对与绝对...

  5. openshift上使用devicemapper

    环境:openshift v3.6.173.0.5 openshift上devicemapper与官方文档中的描述略有不同,在官方文档的描述中,容器使用的lvm文件系统挂载在/var/lib/devi ...

  6. 一、Windows下Git的安装与配置

    一.下载Git安装包 1.打开Git的官方网站:https://git-scm.com/ 2.找到下载页:https://git-scm.com/downloads 3.找到Windows版本下载页面 ...

  7. React Native顶|底部导航使用小技巧

    导航一直是App开发中比较重要的一个组件,ReactNative提供了两种导航组件供我们使用,分别是:NavigatorIOS和Navigator,但是前者只能用于iOS平台,后者在ReactNati ...

  8. CTE(公用表表达式)

    -> 将复杂的派生表写在中间from子句中变得十分臃肿,给为维护等操作带来麻烦 -> 将这个派生表要是能提前到前面,给一个别名,后面查询的时候直接使用别名即可语法: with 表的别名 a ...

  9. WebFrom 小程序【分页功能 】

    实现分页展示功能 基本功能:上一页.下一页.首页.尾页.跳转 两个重要的变量 1.每页显示几条数据  2.现在是第几页    方法 } /*表格样式*/ .tab { width: %; backgr ...

  10. Moco服务器jar包实现简易的API搭建

    永远不要停止前进的脚步,就像你不会忘记以前那些窘迫的连一无所有都称不上的裸露的记忆一样.追求永远的打怪升级,武装自己.双手的努力让曾经那些不堪的记忆在时间的长河中渐渐风化隐匿,但请不要忘记它留下的那一 ...