今天主要学习内容:

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 初识面向对象的更多相关文章

  1. 第五章 JavaScript对象及初识面向对象

    第五章   JavaScript对象及初识面向对象 一.对象 在JavaScript中,所有事物都是对象,如字符串.数值.数组.函数等. 在JavaScript对象分为内置对象和自定义对象,要处理一些 ...

  2. python - 初识面向对象

    1.初识面向对象       面向过程:一切以事务的发展流程为中心           优点:负责的问题流程化,编写相对简单         缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...

  3. python之路--初识面向对象

    一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...

  4. python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)

    一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...

  5. Day7 初识面向对象,面向对象之继承、多态和封装

    一.面向对象引言 一.面向对象的程序设计的由来 详述见:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二.面向对象引子 写一个简单程序 ...

  6. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  7. python学习之老男孩python全栈第九期_day022知识点总结——初识面向对象

    一. 面向对象的引入# 人狗大战 def person(name,HP,aggr,sex): person = { 'name':name, # 昵称 'HP':HP, # 生命值 'aggr':ag ...

  8. 巨蟒python全栈开发-第16天 核能来袭-初识面向对象

    一.今日内容总览(上帝视角,大象自己进冰箱,控制时机) #转换思想(从面向过程到面向对象) 1.初识面向对象 面向过程: 一切以事物的发展流程为中心. 面向对象: 一切以对象为中心,一切皆为对象,具体 ...

  9. day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

随机推荐

  1. JAVA基础知识总结:二十一

    一.URL和URLConnection 1.HTTP 超文本传输协议 是一个应用层的协议 是一个被动的协议 只有客户端主动给服务端发送消息,服务端才会给客户端一个响应 2.URL 统一的资源定位符(网 ...

  2. (转)C# Stopwatch详解

    C# Stopwatch类 命名空间:System.Diagnostics; namespace System.Diagnostics { // 提供一组方法和属性,可用于准确地测量运行时间. pub ...

  3. Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法!

    https://www.cnblogs.com/shihua513/p/6163682.html 在eclipse下用maven编译时,很有可能出现以下错误: Please ensure you ar ...

  4. samtools faidx输出的fai文件格式解析 | fasta转bed | fasta to bed

    fai示例: Sc0000003 2774837 10024730 60 61 Sc0000004 2768176 12845826 60 61 Sc0000005 2756750 15660150 ...

  5. JS获取系统时间--JavaScript基础

    1.网页中实时显示当前时间 <!DOCTYPE html><html lang="en"><head> <meta charset=&qu ...

  6. 20170821xlVBA跨表公式套用

    Public Sub CopyModelHideBlankRows() AppSettings Dim StartTime As Variant Dim UsedTime As Variant Sta ...

  7. re正则表达式方法

    目录 1.python正则匹配 1.1 re.search 正则表达式 1.2 re.match() 正则表达式 1.3 re.match与re.search的区别 1.4 检索和替换 1.5 正则表 ...

  8. 函数式编程语言(Fuction Program Language)

    一.什么是函数式编程语言 函数式编程语言(functional progarm language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. ...

  9. PAT 1031 Hello World for U

    1031 Hello World for U (20 分)   Given any string of N (≥) characters, you are asked to form the char ...

  10. WDA基础六:字段,表等visiable,enable,read_only控制

    今天主要讲一下布局控制:(visiable,enable,read_only) visiable:可见性,控制字段,组件,分组等是否现实在界面上.一般按条件来控制隐藏的可以在CONTEXT NODE里 ...