NB的面向对象

  1. 对象的本质
    对象的本质就是对数据和函数的一种整合,或者说对象就是一个盛放数据与函数的容器。
    (补充:所有的程序都是由“数据”与“功能”组成的,因而编写程序的本质是定义一系列的数据和 一系列的功能来对其进行操作,在学习对象之前,数据与功能是分开的,在学完对象之后,数据 与功能就能整合到一起了)

  2. 面向对象编程的方法与好处
    方法:面向对象编程就是造出一个个对象。把原本分散的,相关的的数据与功能整合到一个个对 象里。这么做既方便使用,也可以提高程序的解耦合作用,从而提高了程序的可扩展性。

  3. 类的本质
    如果说对象是用来存放函数据与函数的容器,那么类就是存放多个对象相同数据与函数的容器

  4. 类与对象在编程中的关系
    在编程中我们需要先定义类,然后通过调用类产生对象,调用类产生的返回值就是对象。生产对象的类与产生的对象之间存在关联,关联是指对象可以访问类中的数据与功能,所以类中的数据仍然属于对象,类只不过是节省空间,减少代码冗余的一种方式,面向对象编程的核心仍然是使用对象。

  5. 如何定义一个类

    class 类名: 
    	  类体  
    

    类命名的方法>>>驼峰体(每个单词的首字母大写,单词将无需空格)

    类体最常见的是函数和变量的定义,但其实类体可以包含任意pyhton代码

    类体代码在定义阶段就可以执行,因而会产生新的名称空间存放类中定义的名字

    class要小写,类名后面不用加括号,末尾要加冒号

  6. 如何查看容器内盛放的东西的方法?

     """ 类名.__dict__ """ 
    
  7. 如何产生一个对象

    # 调用类的过程称为将类实例化,拿到的返回值就称为对象,或称为一个实例
    
  8. 如何调用类

    """  类名() """
    
  9. 初始化对象的方法

    # 在类体内定义一个__init__的函数,就可以在实例化的过程中定制各个对象的独自数据
        def __init__(self,参数1,参数2,……,参数n):
            self.参数1 = 参数1
            self.参数2 = 参数2
            ……
            self.参数n = 参数n
    # 注意点:__init__函数只在被调用阶段执行,在类定义阶段不执行
            # __init__的函数返回值只能是None,不能是其他值,否则会报错
            # stu1的产生过程来分析,调用类会产生一个空对象stu1,然后将stu1连同类调用时括号内的参数一起传给                          Student2.__init(stu1,'小明','19')
    

  1. 绑定

    类中的函数分为两大类,绑定方法与非绑定方法。其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法。在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@classmethod后,该函数就绑定到了类。类方法通常用来在__init__的基础上提供额外实例化的方式。

    补充:绑定到类的方法就是给类用的,但是其实对象也可以用,只不过自动传值的第一个参数仍然是类,也就是说这种调用是没有意义的,并且容易引起混淆。

  2. 非绑定方法(静态绑定)

    非绑定方法:为类中的某个函数加上装饰器@staticmethod后,该函数就变成了非绑定方法,也称为静态方法。该方法不与类或对象绑定,类与对象都可以用来调用它,但它就是一个普通的函数而已,因而没有自动传值一说。

    总结:若类中需要一个功能,该功能的实现代码中需要引用对象则将其定义成对象方法,需要引用类,则将其定义成成类方法,无需引用类对象则将其定义成静态方法。

  3. 隐藏属性

    在变量名或者函数名前面加上__,就可以将其进行隐藏。对于被隐藏的内同,在类定义阶段就发生了语法上的变形:_类名__属性名隐藏是对内不对外的。而且只有在定义阶段发生变形,其他情况不发生变形。
    类里面的隐藏属性的作用是,不直接让外部使用,但可以通过接口可以使用,从而达到对外部数据的严格控制

  4. property装饰器

    python专门提供了一个装饰器property,可以将类中的函数“伪装成”对象数据属性,对象在访问该数据属性时会触发功能的执行,然后将返回值作为本次访问本次的结果。

posted @ 2021-12-02 20:22  recordlife  阅读(61)  评论(0编辑  收藏  举报