day16 初识面向对象
今天主要学习内容:
1.初始面向对象
2 .类 ,对象
3,面向对象和面向过程的对比
4.面向对象的三大特征
1,初始面向对象
面向过程 :
一切以实物的发展流程为中心
面向对象:
一切以对象为中心,一切皆为对象 ,具体的某一个事物就是对象
打比方 大象进冰箱 :
步骤 第一步 ,开门 第二部 , 装大象 ,第三步,关门
面向对象: 大象自己进冰箱
2 .类与对象
class car: #类名 ,创建对象
pass #造车
c=car() #创建一辆车
c.color='红色' #给车添加属性
c.pai='鲁A88888'
c.pailaing='1.4T'
print(c.color)
下面我们要介绍一种新方法
class car(): #创建类
def__init__(self,color,pai,pailiang):# __init__(self)是默认开始创建的属性,
在创建对象的时候,默认执行这个函数
self.color=color #给车一个颜色
self.pai=pai
self.pailiang=pailiang
def pao(self): #定义一个动作,在类中写函数叫方法(与函数的定义一样)
print('我的车会跑')
che=car('红色','鲁A88888','200T') #传参
che.pao() #执行你的车的动作
3. 面向对象与面向过程的对比
1) 脚本 (此时代码最简单,但是不需要构思整个程序的概况)
print("开门")
print("装大象")
print("关门")
2) 函数式编程(比脚本麻烦,对功能有了概括,稍微有了点逻辑)
def kai():
print('开门')
def zhuang():
print("装大象")
def guan():
print('关门')
3) 面向对象编程 ,整个系统进行分析,分析出需要那些对象,然后给对象进行归类
#先写类,然后使用类创建对象,最后用对象去执行相关的操作
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()
函数侧重的是功能
面向对象侧重的是 归类
面对对象的程序:结果相对清晰 .缺点: 代码量比原来大,上手难
面对对象比面向过程啥味好一些,可维护性比原来好
python同时支持面向对象和面向过程:
面向过程: 应用程序相对比较小. 不需要大规模的设计
面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构)
4. 面向对象的三大特征 : 封装 ,继承 ,多态
1) 封装
对属性的封装
对功能的封装
模块
包
class Student:
def __init__(self, num, name, clazz):
self.num = num
self.name = name
self.clazz = clazz
stu = Student("10010", "曹宝哥", "三年二班") # 把多个信息(值) 保存在一个对象里面
stu2 = Student("10086", "王低", "三年一班") def kill_stu(s):
print("杀%s" % (s.name))
kill_stu(stu2) class Game: def login(self):
print("登录") def recharge(self):
print("充钱") def uninstall(self):
print("卸载")
def zhaoduixiang(self):
print("找对象")
class Game1:
def recharge(self):
print("充钱")
def uninstall(self):
print("卸载")
class Game2:
def recharge(self):
print("充钱")
def uninstall(self):
print("卸载")
g = Game2()
g.uninstall()
2) 继承 当出现xxx是一种yyy类型的东西. 可以使用继承关系
子类自动拥有父类中除了私有内容外的其他所有内容
王思聪(熊猫TV) -> 王健林(年龄)
继承目的: 对父类进行扩展
父类的对象不能执行子类中的功能
class Foo:
def getMoney(self):
print("拿钱")
class Bar(Foo):
pass b = Bar()
b.getMoney() # 此时调用的是父类中的方法
3) 多态
多态性: 同一个对象. 多种形态.
python支持的是鸭子类型. 会嘎嘎叫的东西就是鸭子
为了程序能够正常执行. 本来需要传递进来一只鸭子. 但是我只需要传递一个会嘎嘎叫的东西就可以了
# 模拟动物园
# class Animal:
# def chi(self):
# print("会吃")
#
# class GoldenMonkey(Animal):
# def chi(self):
# print("用手拿着吃, 五花八门")
#
# class Tiger(Animal):
# def chi(self):
# print("老虎吃肉")
#
# class Elephant(Animal):
# def chi(self):
# print("大象吃香蕉")
#
# class QiE(Animal):
# def chi(self):
# print("企鹅吃人民币")
#
# # 以下代码是饲养员
# # 优点:超强的可扩展性. 面向对象的核心就是多态
# def wei_animal(ani): # 传进来的东西要会吃就行
# ani.chi()
#
# # 动物园
# t = Tiger()
# m = GoldenMonkey()
# e = Elephant()
#
# wei_animal(t)
# wei_animal(m)
# wei_animal(e)
day16 初识面向对象的更多相关文章
- 第五章 JavaScript对象及初识面向对象
第五章 JavaScript对象及初识面向对象 一.对象 在JavaScript中,所有事物都是对象,如字符串.数值.数组.函数等. 在JavaScript对象分为内置对象和自定义对象,要处理一些 ...
- python - 初识面向对象
1.初识面向对象 面向过程:一切以事务的发展流程为中心 优点:负责的问题流程化,编写相对简单 缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...
- python之路--初识面向对象
一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...
- python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...
- Day7 初识面向对象,面向对象之继承、多态和封装
一.面向对象引言 一.面向对象的程序设计的由来 详述见:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二.面向对象引子 写一个简单程序 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- python学习之老男孩python全栈第九期_day022知识点总结——初识面向对象
一. 面向对象的引入# 人狗大战 def person(name,HP,aggr,sex): person = { 'name':name, # 昵称 'HP':HP, # 生命值 'aggr':ag ...
- 巨蟒python全栈开发-第16天 核能来袭-初识面向对象
一.今日内容总览(上帝视角,大象自己进冰箱,控制时机) #转换思想(从面向过程到面向对象) 1.初识面向对象 面向过程: 一切以事物的发展流程为中心. 面向对象: 一切以对象为中心,一切皆为对象,具体 ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
随机推荐
- 虚拟机镜像压缩(qcow2,raw)
●qcow2 格式的压缩首先,需要对虚拟机系统的剩余空间写零操作: $ dd if=/dev/zero of=/zero.dat 删除 zero.dat$ rm /zero.dat关闭虚拟机,进入虚拟 ...
- Python+Appium环境搭建
1.python环境搭建,这里就不做过多介绍 2.安装 node.js 2.1.官网下载node.js:https://nodejs.org/en/download/ 2.2.获取到安装文件后,直接双 ...
- word2010怎么把白色方框变成黑色方框?
word2010怎么把白色方框变成黑色方框? 打开Word 2010文档,选中第四个白色方框. 切换到“插入”功能区,在符号选项组单击“符号”按钮,出来的窗口单击“其他符号”. 在“符号”选项卡单 ...
- C#清除HTML样式
C#清除HTML样式 需求说明: 网站开发时我们经常用一个富文本控件让用户自己编辑新闻内容和新闻格式,然后将HTML代码一并保存到数据库中. 然后显示文章列表的时候只需要显示一个文章摘要,所以我们就计 ...
- 编译spark-0.9.1
准备工作:注意 spark-0.9.1 要求 scala-2.10.x 版本,sbt-0.12.4版本. centos 6.4 x64 系统,java 1.7.0 x64 1,安装 scala-2.1 ...
- Ftp服务端安装-Linux环境
目的 为什么要搭建FTP服务器,进入maven仓库下载Jar包时点击相应的链接进去会看到目录结构,这个就是ftp站点.可以随意的下载. 环境 Linux系统为CentOS6.5 安装步骤 查询是否已安 ...
- 通过.frm和.ibd恢复mysql数据
.frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索 ...
- 小程序获取openid 小程序授权
小程序获取openid 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. wx.login(Object object) 调用接口获取登录凭证(cod ...
- D - Power Tower欧拉降幂公式
题意:给你一个数组a,q次查询,每次l,r,要求 \(a_{l}^{a_{l+1}}^{a_{l+2}}...{a_r}\) 题解:由欧拉降幂可知,最多log次eu(m)肯定变1,那么直接暴力即可,还 ...
- meta标签常用设置
<!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...