Python 面向对象和面向过程对比
# 大象装冰箱
# 脚本, 此时代码是最简单的. 不需要构思整个程序的概况
print("开门")
print("装大象")
print("关门") # 函数式编程. 比脚本麻烦. 对功能有了概况. def kai():
print('开门')
def zhuang():
print("装大象")
def guan():
print('关门') kai()
zhuang()
guan() # 面向对象编程, 对整个系统进行分析. 分析出需要哪些对象. 然后给对象进行归类.
# 先写类. 然后使用类创建对象. 最后用对象去执行相关的操作
class Elephant:
def __init__(self):
print("创建了一个大象") def kai(self):
print("开门") def zuan(self):
print("大象进冰箱") def guan(self):
print("大象把门带上")
#
dx = Elephant()
dx.kai()
dx.zuan()
dx.guan() # 第一回合
# 脚本胜
# 函数侧重的是功能
# 面向对象侧重的是 归类 # PK2
# # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人
# # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠
# # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠
#
# # 面向过程: 代码非常的冗余. 尤其是参数
def fight_superman(name, jineng):
print("%s使用%s攻击超人" % (name, jineng)) def fight_batman(name, jineng):
print("%s使用%s攻击蝙蝠侠" % (name, jineng)) def fight_spiderman(name, jineng):
print("%s使用%s攻击蜘蛛侠" % (name, jineng))
#
#
fight_superman('小猪佩奇', "嘴巴嘟嘟")
fight_batman('小猪佩奇', "嘴巴嘟嘟")
fight_spiderman('小猪佩奇', "嘴巴嘟嘟")
#
#
class Pig:
def __init__(self, name, jineng):
self.name = name
self.jineng = jineng def fight_superman(self):
print("%s使用%s攻击超人" % (self.name, self.jineng)) def fight_batman(self):
print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng)) def fight_spiderman(self):
print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng))
#
#
pg = Pig("小猪佩奇", "嘴巴嘟嘟")
# # 不需要向原来一样传递一样的参数了
# # 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难
pg.fight_batman()
pg.fight_spiderman()
pg.fight_superman() # 如果写一个定时任务, 半夜12点. 给老板发送财务报表(一张图)
def send_email(address, name, title, content):
print("发送邮件") def send_wechat(wechat_num, name, title, content):
print("发送微信") def send_chat(wechat_num, name, title, content):
print("发送短信") def send_dd(wechat_num, name, title, content):
print("发送钉钉") def send_oa(wechat_num, name, title, content):
print("发送OA") class Messager:
def __init__(self, name, title, content):
self.name = name
self.title = title
self.content = content def send_email(self, address):
print("发送邮件") def send_wechat(self, wechat_num):
print("发送微信") def send_chat(self, phone_num):
print("发送短信") def send_dd(self, dd_num):
print("发送钉钉") def send_oa(self, oa_num):
print("发送OA") # 用面向对象就比面向过程稍微好一些.
# 可维护性比原来好 # python同时支持面向对象和面向过程:
# 面向过程: 应用程序相对比较小. 不需要大规模的设计
# 面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构) # java : 纯面向对象 => 可以把一个微型项目. 做成巨型项目
Python 面向对象和面向过程对比的更多相关文章
- python面向对象和面向过程介绍与区别
一.面向对象和面向过程的区别: a.面向过程: 1)根据业务逻辑从上到下写代码 2)开发思路是将数据和函数按照执行的逻辑顺序组织在一起 3)分开考虑数据与函数 定义性文字: 面向对象编程(Object ...
- python的面向对象和面向过程
一.面向对象和面向过程的区别: a.面向过程: 1)根据业务逻辑从上到下写代码 2)开发思路是将数据和函数按照执行的逻辑顺序组织在一起 3)分开考虑数据与函数 定义性文字: 面向对象编程(Object ...
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...
- python中的面向对象和面向过程
一.面向对象和面向过程 一.什么是面向过程 核心是过程二字:面向过程是一种流水线的工作流程,是先做什么在做什么 二.什么是面向对象 核心 是对象二字:是一种编程思想,上帝思维,一切皆对象,编程中负责调 ...
- Java基础知识强化20:面向对象和面向过程的思想对比
面向对象与面向过程的区别 1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区 ...
- PHP面向对象和面向过程
编程界不论是PHP.Python都有这么两种编程思想,oop面向对象.pop面向过程,这两种在功能上没有多大区别,但是在代码编写上却有很大区别.今天就记录一下面向对象和面向过程的优点.缺点.定义.实现 ...
- Day5-1 面向对象和面向过程
摘要: 类的定义 类的增删改查 对象的增删改查 对象的查找和绑定 面向对象和面向过程的区别: 1.面向过程就像是工厂的流水线,按部就班的有序的工作. 优点:把复杂的问题简单化 缺点:可扩展性差.一个步 ...
- 大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)
一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认 ...
- 面向对象与面向过程 $this的注意事项和魔术方法set和get
一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑 ...
随机推荐
- 『计算机视觉』Mask-RCNN_推断网络其六:Mask生成
一.Mask生成概览 上一节的末尾,我们已经获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工 ...
- python-day97--django-ModelForm
Model Form :直接利用你的models里的字段 应用场景: - ModelForm - 中小型应用程序(model是你自己写的) - Form - 大型应用程序 注意事项: - 1. 类 f ...
- 重写nyoj2——括号匹配
#include "bits/stdc++.h" using namespace std; int comp(char s1,char s2){ ; ; } int main() ...
- (待解决,效率低下)47. Permutations II C++回溯法
思路是在相似题Permutations的基础上,将结果放到set中,利用set容器不会出现重复元素的特性,得到所需结果 但是利用代码中的/* */部分通过迭代器遍历set将set中的元素放在一个新的v ...
- Hadoop---集群的搭建(仅主机模式)
Hadoop---集群的搭建 我有一个虚拟机是用来克隆的,里面设置了java环境,开启不启动防火墙的配置. 准备: 1.我的3个虚拟机: hu_hadoop1(主+从):nameNode+dataNo ...
- Analytic Functions in Oracle
Contents Overview and IntroductionHow Analytic Functions WorkThe SyntaxExamplesCalculate a running T ...
- FTP服务器搭建(Centos7)
1.1.1 查看是否安装vsftp rpm -qa | grep vsftpd 1.1.2 如果没有安装: yum -y install vsftpd 1.2.3 vsftpd.conf 配置文件 匿 ...
- Android Studio向项目添加C/C++原生代码教程
说明:本文相当于官方文档的个人重新实现,官方文档链接:https://developer.android.com/studio/projects/add-native-code 向项目添加C/C++代 ...
- weblogic CVE-2017-10271修复教程
1.简介 CVE-2017-10271是weblogic wls-wsat组件的一个xml反序列化漏洞,可造成远程命令执行.更详细分析可见参考链接,本文强调在进行参考链接修复中的一些细节. 2.影响版 ...
- linux使用lvresize和resize2fs调整lv大小
以下操作基于场景:有两个同vg的lv(applv和rootlv),我们需要从applv腾出1G给rootlv. 1.缩小applv磁盘 lvresize -L -1G /dev/mapper/myvg ...