Python全栈

23.Python之面向对象(类与对象)

2020-03-02  本文已影响0人  免跪姓黄

Python之类与对象

    • 类:用来描述具有相同的属性和方法的对象的集合(在Python中类与类型是一个概念)。

    • 特点:

      • 在程序中,必须先定义类(类名称通常首字母大写),再调用类,然后产生对象;

      • 类(类体)中最常见的就是变量(类的数据属性或者叫做静态变量)与函数(函数属性或者叫做方法)的定义,但类中可以有任意Python代码,并且类体中的代码在类的定义阶段就会立即执行。在类中,如果一个变量的值需要被所有对象共享,那么这个变量应该被定义成静态变量,所有和静态变量相关的增、删、改、查都应该使用类名调用静态变量的方式来处理,而不应该使用对象名调用静态变量的方式进行处理。

      • 类的属性可以进行增、删、改、查等操作

      • 调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或者称为一个实例。

        # For example:
        class Chinese():    # 类命名规则是首字母大写的驼峰体
            '''
            类的注释信息
            '''
            country = 'China' # 类内通常定义相同的特征,country被称为Chinese类中的数据属性
            def __init__(self,name,age,sex):    # 在对象实例化的时候,__init__() 会自动触发执行
                self.Name = name    # Chinese.Name = name
                self.Age = age    # Chinese.Age = age
                self.Sex = sex    # Chinese.Sex = sex
                
            def run(self): # 类内通常定义相同的技能;类内的函数()中默认自带self参数;run(self)称之为Chinese类中的绑定方法
                print(F'{self.Name} is running')
                
        obj = Chinese('HC', 18, 'males')   # 类的实例化,Chinese.__init__(obj,'HC',18,'males')
        
        
    • 类的实例化做了三件事:

      • 先产生一个空对象;
      • 自动触发类内部 __init__() 函数的执行。__init__方法:
        • 该方法内可以有任意的python代码;
        • 一定不能有返回值。
      • 将空对象及调用类括号内的参数,一同传给 __init__(),为对象定制独有的属性。在产生对象时,需要在类内定义一个__init__的函数,该函数会在调用类的时候自动触发执行,为类中不同于那些相同特征与技能的对象进行初始化。
    • 类内部定义的变量是给所有对象共享的,所有对象使用类中的属性都指向的都是同一个内存地址。

    • 类内部定义的函数,类可以使用,但类用的时候就是普通函数,普通函数有几个参数就要传几个参数;而类内部定义的函数,其实是给对象使用的,当对象调用类内部的函数时,类内部的函数会绑定给对象,称之为绑定方法,绑定方法的特殊之处在于:谁来调用,就会将谁当作第一个参数self自动传入。


  1. 对象

    • 类的实例化结果就是一个对象,对象中的变量只属于对象本身,每个对象都有属于自己的名称空间来存储对象的变量,当使用对象名去调用类中的属性时,会优先在自己的名称空间中寻找,再去类中寻找,如果类中没有引用其他类,找不到就会报错,即对象属性的查找顺序为:先找对象自己的名称空间(__dict__) -> 类的名称空间(__dict__)。

    • 对象的操作:

      # 类属性的增、删、改、查
      # 查
      print(Chinese.country)
      # 增
      Chinese.gender = 'males'
      print(Chinese.gender)
      # 改
      Chinese.gender = 'females'
      print(Chinese.gender)
      # 删
      del Chinese.gender
      

  1. 类与函数的区别

    • 函数内的代码,在函数定义阶段并不会运行,只有在调用阶段才会运行;类体内的代码,在类定义阶段就会立刻执行,并且产生类的名称空间。

  1. Python中一切皆对象

    • 在Python3中统一了类与类型的概念,类即类型。

  1. 了解内容:新式类与经典类

    • 新式类

      • 继承object的类,以及该类的子类,都是新式类。
      • 在Python 3中如果一个类没有指定继承的父类,默认就继承object,因此Python 3中所有的类都是新式类。
    • 经典类

      • 没有继承object的类,以及该类的子类,都是经典类。
      • 只有在Python2中才区分新式类与经典类,Python3中都是新式类。
    • 新式类和经典类只有在菱形继承下才有区别:

      • 经典类:深度优先查找。
      • 新式类:广度优先查找。
上一篇下一篇

猜你喜欢

热点阅读