面向对象

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. Jmeter参数化的方法

    测试接口时,使用Jmeter在请求中输入参数,若是有多种情况,有多条测试参数,是不是要每个情况逐条输入呢?逐条输入会让人觉得比较麻烦,因此,就有了Jmeter参数化. Jmeter参数化的方法: 用户 ...

  2. C# Winform同时启动多个窗体类

    首先创建一个类,存放将要同时显示的窗体 using System; using System.Collections.Generic; using System.Linq; using System. ...

  3. python lxml库生成xml文件-节点命名空间问题

    lxml库,处理xml很强大,官方文档:https://lxml.de/tutorial.html#namespaces 例如: 我们要生成如下格式的报文: <ttt:jesson xmlns: ...

  4. 前端进击的巨人(五):学会函数柯里化(curry)

    柯里化(Curring, 以逻辑学家Haskell Curry命名) 写在开头 柯里化理解的基础来源于我们前几篇文章构建的知识,如果还未能掌握闭包,建议回阅前文. 代码例子会用到 apply/call ...

  5. mysql表分区案例

    0.整理表空间碎片optimize table tablename 1.表分区按年分区,季度子分区 alter table key_part partition by range(year(creat ...

  6. Java并发编程笔记之Timer源码分析

    timer在JDK里面,是很早的一个API了.具有延时的,并具有周期性的任务,在newScheduledThreadPool出来之前我们一般会用Timer和TimerTask来做,但是Timer存在一 ...

  7. 利用shell显示wordcount功能

      Shell脚本编程是Linux系统最为核心的技术之一,它能够利用简单的命令来实现一些复杂的功能,同时,由于Linux提供了很多文本处理命令,如grep(grep family), tr, sed, ...

  8. windows BLE编程 net winform 连接蓝牙4.0

    winform 程序调用Windows.Devices.Bluetoot API 实现windows下BLE蓝牙设备自动连接,收发数据功能.不需要使用win10的UWP开发. 先贴图,回头来完善代码 ...

  9. break与continue,return结束循环区别

    break是跳出一层循环,continue是结束一趟循环 ,return才是结束所有层循环! 如果有多层for循环,break会跳出当前这一层,去执行最外层循环(而不是退出所有层循环);而contin ...

  10. 菜鸟入门【ASP.NET Core】9:RoutingMiddleware介绍以及MVC引入

    前言 前面介绍了使用app.Map来配置路由,但是对于一般不是特别大的项目来说,不使用Map来进行路由配置. 配置路由 我们首先需要在Startup.cs文件中的ConfigureServices方法 ...