zoukankan      html  css  js  c++  java
  • 对象

    第六章 对象(Object)

    什么是对象?

    - 对象是内存中专门用来存储数据的一块区域。
    - 对象中可以存放各种数据(比如:数字、布尔值、代码)
    - 对象由三部分组成:
        1.对象的标识(id)
        2.对象的类型(type)
        3.对象的值(value)
    

    面向对象(oop)

    - Python是一门面向对象的编程语言
    - 所谓的面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的
    - 面向过程的编程的语言
        - 面向过程指将我们的程序的逻辑分解为一个一个的步骤,
            通过对每个步骤的抽象,来完成程序
        - 例子:
            - 孩子上学
                1.妈妈起床
                2.妈妈上厕所
                3.妈妈洗漱
                4.妈妈做早饭
                5.妈妈叫孩子起床
                6.孩子上厕所
                7.孩子要洗漱
                8.孩子吃饭
                9.孩子背着书包上学校
    
        - 面向过程的编程思想将一个功能分解为一个一个小的步骤,
            我们通过完成一个一个的小的步骤来完成一个程序
        - 这种编程方式,符合我们人类的思维,编写起来相对比较简单
        - 但是这种方式编写代码的往往只适用于一个功能,
            如果要在实现别的功能,即使功能相差极小,也往往要重新编写代码,
            所以它可复用性比较低,并且难于维护 
    
    - 面向对象的编程语言
        - 面向对象的编程语言,关注的是对象,而不关注过程 
        - 对于面向对象的语言来说,一切都是对象       
        - 例子:
            1.孩他妈起床叫孩子上学
    
        - 面向对象的编程思想,将所有的功能统一保存到对应的对象中
            比如,妈妈功能保存到妈妈的对象中,孩子的功能保存到孩子对象中
            要使用某个功能,直接找到对应的对象即可
        - 这种方式编写的代码,比较容易阅读,并且比较易于维护,容易复用。
        - 但是这种方式编写,不太符合常规的思维,编写起来稍微麻烦一点 
    
    - 简单归纳一下,面向对象的思想
        1.找对象
        2.搞对象
    

    类(class)

    - 我们目前所学习的对象都是Python内置的对象
    - 但是内置对象并不能满足所有的需求,所以我们在开发中经常需要自定义一些对象
    - 类,简单理解它就相当于一个图纸。在程序中我们需要根据类来创建对象
    - 类就是对象的图纸!
    - 我们也称对象是类的实例(instance)
    - 如果多个对象是通过一个类创建的,我们称这些对象是一类对象
    - 像 int() float() bool() str() list() dict() .... 这些都是类
    - a = int(10) # 创建一个int类的实例 等价于 a = 10
    - 我们自定义的类都需要使用大写字母开头,使用大驼峰命名法(帕斯卡命名法)来对类命名
    
    - 类也是一个对象!
    - 类就是一个用来创建对象的对象!
    - 类是type类型的对象,定义类实际上就是定义了一个type类型的对象
    

    使用类创建对象的流程(参考图1)

    1.创建一个变量
    2.在内存中创建一个新对象
    3.将对象的id赋值给变量
    

    类的定义(参考图2)

    - 类和对象都是对现实生活中的事物或程序中的内容的抽象
    - 实际上所有的事物都由两部分构成:
        1.数据(属性)
        2.行为(方法)
    
    - 在类的代码块中,我们可以定义变量和函数,
        变量会成为该类实例的公共属性,所有的该类实例都可以通过 对象.属性名 的形式访问 
        函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名() 的形式调用方法
    
    - 注意:
        方法调用时,第一个参数由解析器自动传递,所以定义方法时,至少要定义一个形参! 
    
    - 实例为什么能访问到类中的属性和方法
        类中定义的属性和方法都是公共的,任何该类实例都可以访问
    
        - 属性和方法查找的流程
            当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,
                如果有,则直接返回当前的对象的属性值,
                如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值,
                如果类对象中依然没有,则报错!
    
        - 类对象和实例对象中都可以保存属性(方法)
            - 如果这个属性(方法)是所有的实例共享的,则应该将其保存到类对象中
            - 如果这个属性(方法)是某个实例独有,则应该保存到实例对象中     
            
        - 一般情况下,属性保存到实例对象中
            而方法需要保存到类对象中    
    

    创建对象的流程

    p1 = Person()的运行流程
        1.创建一个变量
        2.在内存中创建一个新对象
        3.__init__(self)方法执行
        4.将对象的id赋值给变量
    

    类的基本结构

    class 类名([父类]) :
    
        公共的属性... 
    
        # 对象的初始化方法
        def __init__(self,...):
            ...
    
        # 其他的方法    
        def method_1(self,...):
            ...
    
        def method_2(self,...):
            ...
    
        ...    
    
    - 练习:
        尝试自定义一个表示狗的类(Dog)      
            属性:
                name
                age
                gender
                height
                ...
            方法:  
                jiao()
                yao()
                run()
                ...
  • 相关阅读:
    CoreData
    转场动画
    java基础(8)
    java基础(7)
    java基础(6)
    java基础(5)
    java基础(4)
    java基础(3)
    java基础(2)
    java基础(1)
  • 原文地址:https://www.cnblogs.com/Acapplella/p/13582837.html
Copyright © 2011-2022 走看看