zoukankan      html  css  js  c++  java
  • python 初识面向对象

    1. 初识面向对象
    面向过程:
    一切以事务的发展流程为中心.
    面向对象:
    一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象

    打比方:
    大象进冰箱
    步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门

    面向对象:大象, 你进冰箱.
    此时主语是大象. 我操纵的是大象. 此时的大象就是对象

     1 class Car:  # 类名首字母大写,严格蹲守驼峰命名规则
     2     pass
     3 
     4 
     5 # 造车
     6 c = Car()  # 类名()  # 创建对象
     7 
     8 #  出厂之后进行改装
     9 c.color = '红颜色'  # 对象.属性    点:的  当属性不存在的时候, 添加一个属性
    10 c.pai = '京A8888'  # 对象.属性
    11 c.pailiang = '555L'  # 排量
    12 
    13 print(c.color)  # 此车是红颜色
    14 print(c.pai)
    15 print(c.pailiang)
    16 
    17 c.color = '绿颜色'  # 当属性存在的时候是修改属性信息
    18 # 对象.属性 =xxx 设置属性信息
    19 print(c.color)

    2. 类. 对象
    类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
    对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象

    类与对象的关系:
    类是对xxx事物的归类.
    写:
    __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.

    def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.
    pass

    对象是xx类型的一个具体
    创建对象: 类名()

    创建类:
    class 类名:

    def __init__(self): # 初始化方法. 又被成为构造方法
    self.属性 = 值
    self.属性 = 值
    self.属性 = 值

    def fangfa(self):
    方法体(函数体, return)

    创建对象:
    变量 = 类名() # 实例化 <-> 创建对象

    变量.属性 # 访问对象的属性信息
    变量.方法() # 访问类中的方法

     1 1.
     2 class Car:  # 类名首字母大写,严格蹲守驼峰命名规则
     3     # __init__方法是一个特殊的方法. 初始化方法. (构造方法)
     4     # 在创建对象的时候会自动的调用__init__()
     5     # self就是你创建出来的那个对象
     6     def __init__(self):  # init初识方法. 在创建对象的时候. 默认执行这个函数
     7         print('我是init')
     8         print('self=', self)
     9 
    10 
    11 c = Car()  # 创建Car类型对象. 此时self参数不需要我们管
    12 print('c=', c)
    13 
    14 2.
    15 class Car:  # 类名首字母大写,严格蹲守驼峰命名规则
    16     def __init__(self, color, pai, pailiang):  # init初识方法. 在创建对象的时候. 默认执行这个函数
    17         # self.color = '红色' # 在出厂的时候都是红色 静态的
    18         self.color = color  # 动态获取 第一个color是设置 第二个color是获取的参数
    19         self.pai = pai
    20         self.pailiang = pailiang
    21 
    22     # 跑: 动作, 功能 -> 函数
    23     # 在类中写的函数-> 方法
    24     # self 当前类的对象
    25     def pao(self):  # self是自动传递的. 不用管它
    26         print('%s我的车能跑' % self.color)  #self.color
    27     def jump(self):
    28         print('you jump, I jump')
    29 #
    30 #
    31 #
    32 #
    33 c = Car('红色', '京A8888', '555L')  # 创建Car类型对象. 此时self参数不需要我们管
    34 c2 = Car('蓝色', '京B6666', '1.6T')
    35 print(c.color)
    36 print(c2.color)
    37 #
    38 #
    39 c.pao()
    40 c2.pao()
    41 c.jump()


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

    4. 面向对象的三大特征
    封装:
    1. 对属性的封装(__init__())
    self.xxx = xxx
    2. 对方法和功能的封装

    继承
    子类自动拥有父类中除了私有内容外的其他所有内容
    class Bar(Foo): Bar对Foo进行了扩展
    pass

    当出现x是一种y的时候. 推荐使用继承关系
    python支持多继承. 查找顺序: 先找离他近的.

    1 class Foo:
    2     def getMoney(self):
    3         print('拿钱')
    4 
    5 class Bar(Foo):
    6     pass
    7 
    8 b = Bar()
    9 b.getMoney()  # 此时调用的是父类中的方法

    多态(python原生直接就是多态)
    python更多的支持的是鸭子模型, 只要会嘎嘎叫就是好鸭子

     1 多态性: 用一个对象. 多种形态
     2 python 支持的是鸭子类型. 会嘎嘎叫的东西就是鸭子
     3 为了程序能够正常执行. 本来需要传递进来一只鸭子. 但是我只需要传递一个会嘎嘎叫的东西就可以了
     4 def func(yazi):
     5     yazi.gagajiao()
     6 
     7 class Animal:
     8     def chi(self):
     9         print("会吃")
    10 
    11 class GoldenMonkey(Animal):
    12     def chi(self):
    13         print("用手拿着吃, 五花八门")
    14 
    15 class Tiger(Animal):
    16     def chi(self):
    17         print("老虎吃肉")
    18 
    19 class Elephant(Animal):
    20     def chi(self):
    21         print("大象吃香蕉")
    22 
    23 class QiE(Animal):
    24     def chi(self):
    25         print("企鹅吃人民币")
    26 
    27 # 以下代码是饲养员
    28 # 优点: 超强的可扩展行. 面向对象的核心就是多态
    29 def wei_animal(ani):  # 传进来的东西要会吃的就行
    30     ani.chi()
    31 
    32 # 动物园
    33 t = Tiger()
    34 m = GoldenMonkey()
    35 e = Elephant()
    36 
    37 wei_animal(t)
    38 wei_animal(m)
    39 wei_animal(e)
    40 
    41 a = 188
    42 def cul(n):  # python中万事万物都是对象, object(对象)
    43     print(n)
    44 
    45 cul(a)
    46 cul('哈哈')
  • 相关阅读:
    php常用操作(第二版)
    mysql操作遇到的坑(第一版)
    php常用函数(第一版)
    ThinkPHP5实现定时任务
    mysql高级扩展
    laravel基础操作手册
    初次接触python时,整理的一些基础操作
    后端技术杂谈1:搜索引擎基础倒排索引
    搞懂分布式技术21:浅谈分布式消息技术 Kafka
    搞懂分布式技术20:消息队列因何而生
  • 原文地址:https://www.cnblogs.com/beargod/p/10187551.html
Copyright © 2011-2022 走看看