洗礼灵魂,修炼python(31)--面向对象编程(1)—面向对象,对象,类的了解
面向对象
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)—面向对象,对象,类的了解的更多相关文章
- Python进阶 函数式编程和面向对象编程等
函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...
- Python入门之面向对象编程(一)面向对象概念及优点
概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...
- 浅谈Python中函数式编程、面向对象编程以及古怪的PythonIC
1.函数式编程作为结构化编程的一种,正在受到越来越多的重视.那么什么事函数式编程呢? 在维基百科中给出了详细的定义,函数式编程又称泛函数编程,是一种编程规范,它将函数运算视为数学上的函数计算.简单的来 ...
- python 面向对象编程、获取对象信息
面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...
- Python - 面向对象编程 - 什么是对象和类
面向对象编程 Object Oriented Programming,简称 OOP,是一种程序设计思想 OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法 Python里面有一句话: ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- java面向对象编程——第四章 类和对象
OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...
- PHP面向对象编程学习之对象基础
php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...
- 04面向对象编程-01-创建对象 和 原型理解(prototype、__proto__)
1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念 ...
- 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础
1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...
随机推荐
- 【LeetCode】7. 整数反转python3
题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1:输入: 123 输出: 321 示例 2:输入: -123 输出: -321 示例 3:输入: 120 输出 ...
- 关于springboot aop 俩次调用的问题 aop多次调用
由于我在springboot 启动类中 给我的切面类进行了赋值 即@Bean 然而我在切面类中加了@Component 导致 springboot 注入了俩个 bean 所以导致 aop 多次执行 ...
- 从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- 前端通信:ajax设计方案(十)--- 完善Promise A+规范,增加mock数据功能
半年不迭代,迭代搞半年,说的就是我,这里有点尴尬了,直接进入主题吧 我记得在这篇博客的时候集成了Promise的,不过那个时候就简简单单的写了一点最基础,在一些特殊的case上,还是有点问题的,所以才 ...
- Feign使用Hystrix
Feign使用Hystrix开发步骤 1.导入依赖spring-cloud-starter-hystrix 2.消费启动类开启@EnableCircuitBreaker 3.配置yml文件feign. ...
- 【API知识】ElementUI一些问题的解决方案
前言 本人并不是前端开发人员,不过前端的界面和交互也没少写.以下整理一下我在使用elementUI过程中遇到的问题和对应的解决方案. 正文 1.表格字段过长省略 elmentUI的table-colu ...
- 动手实现react Modal组件
Modal组件 长话不多说,接下来让我们来动手实现一个react Modal组件. 我们先来看一下实际效果 Modal的布局 首先,让我们先思考下一个Modal组件的布局是怎么样的. 我们先拿一个基本 ...
- 你不知道的Linux(持续更新中)
1.关于GNU.Linux.GNU/Linux三者的关系 GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统.(也可把GNU看成一个自由软件工程) ...
- IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API
IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API 原文:http://docs.identityserver.io/en/release/quickstarts/ ...
- AngularJS初始化Select选择框
一.引入 之前一个离职的同事负责的项目大量的引入了AngularJS的JS框架,后来我接手相关他项目里的功能.由于对AngularJS不是太熟,在他的功能上进行二次开发就比较费劲了,印象比较深的一个就 ...