洗礼灵魂,修炼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 ...
随机推荐
- [视频]K8飞刀 mysql注入点拿shell & UDF提权教程
[视频]K8飞刀 mysql注入点拿shell & UDF提权教程 链接: https://pan.baidu.com/s/1a7u_uJNF6SReDbfVtAotIw 提取码: ka5m
- C# signtool error:no certificates were found that met all the given criteria 错误解决方案
程序运行时报错:signtool error:no certificates were found that met all the given criteria (汉译:符号工具错误:没有找到符合所 ...
- Android动态添加Fragment
Android动态添加Fragment 效果图如下: 项目结构图如下: Fragment1: package com.demo.dongtaifragment; import android.app. ...
- 使用FluentMigrator进行数据库迁移
介绍 在开发的过程中,经常会遇到数据库结构变动(表新增.删除,表列新增.修改.删除等).开发环境.测试环境.正式环境都要记性同步:如果你使用EF有自动迁移的功能,还是挺方便的.如果非EF我们需要手工处 ...
- kubernetes构建时容器的时间与宿主机不一致的解决方法
kubernetes默认使用docker容器部署的应用,会出现时间与主机不一致的情况 容器时间与主机差8个小时:主机的与容器的/etc/localtime不一致 解决方法:挂载主机的/etc/loca ...
- 高可用Hadoop平台-Oozie工作流之Hadoop调度
1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...
- Kafka实战-数据持久化
1.概述 经过前面Kafka实战系列的学习,我们通过学习<Kafka实战-入门>了解Kafka的应用场景和基本原理,<Kafka实战-Kafka Cluster>一文给大家分享 ...
- 基于cookie的SSO单点登录系统
利用COOKIE实现单点登录功能 近期公司要求帮一个项目实现单点登录功能,在综合考量下决定采用cookie实现,大概的流程如下图所:
- Topshelf 学习 跨平台【转载】
Topshelf 学习 跨平台 Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 官网:http://topshe ...
- Linux路由表信息-route命令
使用命令 :route route 命令 显示和设置Linux路由表 -A:设置地址类型: -C:打印将Linux核心的路由缓存: -v:详细信息模式: -n:不执行DNS反向查找,直接显示数字 ...