python之面向对象(一)
python编程分为三个阶段:
- 面向过程编程:根据业务逻辑从上到下垒
- 函数式编程:将某功能进行函数封装,使用时调用函数即可,减少代码重复量
- 面向对象编程:对函数进行分类和封装
理论上我们是比较鄙视面向过程编程的,那么问题来了,那函数式编程和面向对象编程我们该用哪个呢?
先来看两个的特点吧:
- 函数编程,逻辑清晰,简单,为项目而生,维护困难,函数式编程提倡的解决方案是数据是不可变的, 就没有了一直在改变的状态, 从而降低了复杂度.
- 面向对象,大而全,复杂,为大项目而生,开发周期长,理论上长久维护简单,实际上一塌糊涂...面向对象一个最大的特点是抽象, 所以面向对象式编程特别适合处理业务逻辑,因此被广泛应用于目前的软件开发当中.
总结
- 那么什么情况下用面向对象呢?当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可,我觉得这个是对于我这种初学者的最简答案了吧... 
- 什么时候使用函数式编程呢?各个函数之间是独立且无共用的数据 
类和对象的创建
面向对象编程方式的落地,需要使用类和对象来实现:
- 类可以看为一个模板,模板了包含了多个函数,函数实现某些功能
- 对象是根据模板创建的实例,通过实例对象可以调用类中的功能函数
- class是关键词,声明创建一个类
- 类后面加(),表示创建对象
- 类中定义函数时,第一个参数必须为self,而类中的函数称为方法
面向对象的三大特性
不是抽烟喝酒烫头....是
- 封装
- 继承
- 多态
封装
封装其实是分为两步:封装和调用!
python之面向对象(一)的更多相关文章
- python基础——面向对象编程
		python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ... 
- Python的面向对象3
		接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外 ... 
- Python的面向对象2
		我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ... 
- Python的面向对象1
		今天,我们来介绍Python的面向对象编程,其实面向对象并不陌生,在C++ ,Java ,PHP中也有大量使用! 好了,我们来步入正题! 那什么是面向对象编程呢? 1. 面向对象编程是一种程序设计 ... 
- My way to Python - Day05 - 面向对象-思维导图
		My way to Python - Day05 - 面向对象 思维导图 
- Python进阶---面向对象的程序设计思想
		Python的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ... 
- Python之面向对象一
		引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = ... 
- python基础——面向对象进阶下
		python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ... 
- python基础——面向对象进阶
		python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ... 
- python基础——面向对象的程序设计
		python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ... 
随机推荐
- getParameter百科
			获取数据库中的参数数据 getParameter(). request.getParameter("username");其中的这个username 是接受前台的参数 比如in ... 
- js 判断微信浏览器(转)
			最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去.在分享页面上提供公司APP的下载.但是在很多应用的浏览器中,点击下载链接无法下载应用.那么针对这些浏览器我们需要给用户提示从safa ... 
- Swift--控制流与oc不同的地方
			1.For-in循环中... for index in 1...5 { print("\(index) times 5 is \(index * 5)") } for _ in 1 ... 
- 数位dp整理
			数位dp的思想就在于递归,记录当前的某一个唯一状态,依次递归下去,要注意唯一. 数位dp常设的状态有当前位置,上一数字,是否具有前导零,是否有限制. 1.CodeForces 55DBeautiful ... 
- CF 277E Binary Tree on Plane (拆点 + 费用流) (KM也可做)
			题目大意: 平面上有n个点,两两不同.现在给出二叉树的定义,要求树边一定是从上指向下,即从y坐标大的点指向小的点,并且每个结点至多有两个儿子.现在让你求给出的这些点是否能构成一棵二叉树,如果能,使二叉 ... 
- css中“zoom:1”是什么意思
			继承性: 无 兼容性: IE 基本语法 zoom : normal | number 语法取值 normal : 默认值.使用对象的实际尺寸 number : 百分数 | 无符号浮点实数.浮点实数 ... 
- C程序设计语言练习题1-11
			练习1-11 你准备如何测试单词计数程序?如果程序中存在某种错误,那么什么样的输入最可能发现这类错误呢? 代码如下: #include <stdio.h> // 包含标准库的信息. #de ... 
- nRF51 DFU 初始化包介绍及生成工具
			nRF51 DFU 初始化包 当升级数据包时,在应用程序映像传输之前,在DFU中需要初始化包来执行映像的安全检测.这个初始化包作为升级流程的一部分提供了安全检测机制,因此被升级的设备只能接收兼容的应用 ... 
- linux内核学习之一:环境搭建--安装Debian7.3
			本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ... 
- RichTextBox控件日常使用集合
			1.RichTextBox控件自动滚动到底部 richTextBox1.ScrollToCaret(); //将控件的内容滚动到当前光标位置 
