一 . 初识面向对象

面向过程:
  一切以事务的发展流程为中心.
面向对象:
  一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方:
  大象进冰箱
    步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门     面向对象:大象, 你进冰箱.
      此时主语是大象. 我操纵的是大象. 此时的大象就是对象

二 . 类.对象

类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
  对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象   类与对象的关系:
    类是对xxx事物的归类.
      写:
        __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.         def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.
          pass     对象是xx类型的一个具体
      创建对象: 类名()
创建类:
    class 类名:       def __init__(self): # 初始化方法. 又被成为构造方法
        self.属性 = 值
        self.属性 = 值
        self.属性 = 值       def fangfa(self):
        方法体(函数体, return)     创建对象:
      变量 = 类名() # 实例化 <-> 创建对象       变量.属性 # 访问对象的属性信息
      变量.方法() # 访问类中的方法
class Hero:
def __init__(self, waihao, name, story):
self.waihao = waihao
self.name = name
self.story = story
def q(self):
print("拎着宝剑嗷嗷跑")
def w(self):
print("护盾")
def e(self):
print("电风扇")
def r(self):
print("大宝剑")
gw = Hero("德玛西亚之力", "盖伦", "500年前盖伦拿一个破棍子捅破了玉皇大帝的尿壶...埋在五指山下")
gw.q()
gw.w()
gw.r()
class Phone:
def __init__(self, color, dianchi, num, price):
self.color = color
self.dianchi = dianchi
self.num = num
self.price = price
def call(self, ren):
print("使用我的%s颜色价值%s的电话打给%s" % (self.color, self.price, ren))
def play(self):
print("电话可以打游戏")
sj = Phone("黑色", "5W安", "", "9W欧元")
sj.call("刘德华")
sj.play()

三 . 面向对象和面向过程的对比  

如果写一些比较小的程序用面向过程.
程序很复杂. 很庞大建议用面向对象.

三 . 面向对象的三大特征

封装:
    1. 对属性的封装(__init__())
    self.xxx = xxx
    2. 对方法和功能的封装 继承
  子类自动拥有父类中除了私有内容外的其他所有内容
  class Bar(Foo): Bar对Foo进行了扩展
    pass
  当出现x是一种y的时候. 推荐使用继承关系
  python支持多继承. 查找顺序: 先找离他近的. 多态(python原生直接就是多态)
  python更多的支持的是鸭子模型, 只要会嘎嘎叫就是好鸭子

  鸭子模型

# 鸭子模型

class Animal:
def eat(self):
print('动物会吃') class Tiger:
def eat(self):
print('老虎也会吃') class Cat:
def eat(self):
print('猫也能吃') # 只要能eat()的就是动物
def func(animal):
animal.eat() t = Tiger() # Tiger有eat() 所以Tiger是动物
c = Cat() # Cat有eat() 所以Cat也是动物
func(t)
func(c)

  

python之路--初识面向对象的更多相关文章

  1. python之路----初识面向对象(二)

    类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...

  2. Python 入门 之 初识面向对象

    Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...

  3. (转)Python之路,Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

  4. Python之路-初识python及环境搭建与测试(Python安装、Anaconda安装、PyCharm安装)

    一.认识Python 起源 Python的作者是著名的“龟叔”Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻 ...

  5. Python之路,Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏 ...

  6. Python之路: 面向对象

    Python是一门面向对象的语言,所以在Python中创建一个类和对象是很容易的.接下来了解一下面像对象的一些基本特征. 面向对象技术简介 类(class):描述具有相同的属性和方法的对象的集合.定义 ...

  7. 转:Python之路,Day6 - 面向对象学习

    这篇文章写的不错,转来收了 转自:http://www.cnblogs.com/alex3714/articles/5188179.html   本节内容:   面向对象编程介绍 为什么要用面向对象进 ...

  8. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  9. 十一Python之路,Day6 - 面向对象学习

      本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战& ...

随机推荐

  1. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  2. P1678 烦恼的高考志愿(二分)

    emmmm,我感觉我在解题的过程中还是有点吃亏的,因为,我知道是二分,只是大概知道怎么分,没有管这道到底是需要怎样的二分.然后在题上卡了很久. 思路:要找到填报学校的录取线x和自己的分数y的绝对值最小 ...

  3. Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡

    转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...

  4. java jvm heap dump及 thread dump分析

    一.概念: 在进行java应用故障分析时,经常需要分析内存和cpu信息,也就说所谓的heap dump 和 thread dump heap dump: heap dump文件是一个二进制文件,需要工 ...

  5. 【mongoDB查询进阶】聚合管道(一) -- 初识

    https://segmentfault.com/a/1190000010618355 前言:一般查询可以通过find方法,但如果是比较复杂的查询或者数据统计的话,find可能就无能为力了,这时也许你 ...

  6. linux内存源码分析 - 内存池

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 内存池是用于预先申请一些内存用于备用,当系统内存不足无法从伙伴系统和slab中获取内存时,会从内存池中获取预留的 ...

  7. 关于 js tofixed()保留小数位数问题

    保留位数必须是数字 const num = parseFloat ('123456.33').tofixed(2); !!!! 注意 现在的的 num 是 字符串类型, 如果给它加数字的话,就会报错 ...

  8. BZOJ4361 isn 树状数组、DP、容斥

    传送门 不考虑成为非降序列后停止的限制,那么答案显然是\(\sum\limits_{i=1}^N cnt_i \times (N-i)!\),其中\(cnt_i\)表示长度为\(i\)的非降序列数量 ...

  9. 【php增删改查实例】第二十二节 - 引入百度地图

    20.用户新增地址字段 在实际的开发中,经常会出现对数据表新增或者修改字段的事情,所以,当用户提出加字段的需求时,我们的页面以及后台程序都要进行相应的改动. 本节就以增加一个地址字段为例. 打开nav ...

  10. 两个select之间的元素互相移动并保持顺序

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...