Python全栈自动化系列之Python编程基础(类讲解)

文山羊 2020-02-01

一、类

类可以用来封装一类事物共同的属性和行为

1)特征:即属性:属性就是定义在类里面的变量

  a.类属性:直接定义在类里面的变量(这个类的每个对象都有这个属性,里面的属性值都是一样)

    共有属性:在类外面的通过类和对象都可以访问

    私有属性:只能在类里面访问,类外面不要去访问

        私有属性的定义:

            以单下划线开头:例如,_attr = 10(在类外面可以访问,但不要在类外面使用)

            以双下划线开头:例如,__attr = 100(在类外面不能直接访问)

        拓展:双下划线开头的私有属性,在保存的时候其实对外是换了一个名字(__属性   =====>  _类名__属性)

  b.对象属性(实例属性):这一类事物都可能会有这个属性,属性值有可能不一样(自己独立的属性)

    对象属性的定义:

          方式一:通过对象进行赋值:对象.属性=属性值(在类外面)

          方式一:通过初始化方法__init__进行定义:self.属性 = 属性值(在类里面的__init__方法中 )

                self:代表的是对象本身,那个对象去调用方法,self代表的就是那个对象

2)__init__方法:可以用来初始化对象属性

3)对象,是通过类创建出来的,拥有这个类的所有的行为和特征

    通过类创建对象:

        obj = 类名()

2)行为:方法,即函数,方法就是定义在类里面的函数,方法里面的第一个参数必须是self(这是规范)

注意:

  ①对象可以访问类属性

  ②对象可以访问对象属性

  ③对象可以调用方法

  ④类可以访问类属性

  ⑤类不能访问对象属性

  ⑥类不能调用方法

二、类的定义

1)使用关键字:class

  语法:

    方式一:class  类名:

          # 类的属性和方法

    方式二:class  类名(object)

          # 类的属性和方法

2)类的定义规范:

  1、遵循标识符的命名规范

  2、类名的风格:严格遵循大驼峰命名法(即,每个单词的第一个字母必须大写

三、类的方法和静态方法

  对象方法(实例方法):

    对象方法的第一个参数,是self,self代表是对象本身

    只能通过对象去调用,对象.方法名()

  类方法:应用场景,如果这个方法以类为主体去调用,方法内部不会涉及到对象属性和对象方法的使用,那么该方法就应该定义成类方法

    在定义方法前加一个@classmethod

    类方法的第一个参数,是cls,cls代表的是类本身

    即可以通过对象去调用,也可以通过类去调用(对象.方法名()  或者   类.方法名()  )

  静态方法:应用场景,如果内部不会使用类属性和类方法,也不会使用对象和属性方法的使用,那么该方法就应该定义成静态方法

    静态方法的定义:在定义方法前加一个@staticmethod

    没有必须要定义的固定参数

    既可以通过对象去调用,也可以通过类去调用(对象.方法名()  或者   类.方法名() )

四、继承

继承关系注意点:

      通过继承可以获取父类的方法和属性

      私有的属性是不能继承的(双下划线的私有属性不能继承)

      一个类可以同时继承多个父类。子类都可以继承所有的父类(多继承时,是按顺序继承

五、重写父类方法

1)定义:在子类中定义和父类同名的方法,这个操作叫做重写父类的方法

2)关于方法调用:

    子类可以继承父类的方法,意味着子类可以调用父类的方法(父类不能调用子类的方法)

    如果子类重写了父类方法,那么在调用时,他优先调用自身的方法

3)关于在子类的方法中,如何调用被重写的父类方法(调用父类同名的方法)

  第一种:父类名.方法名(self)

  第二种:super().方法名()   # super可以调用同名的父类方法(一级一级往上找父类同名方法)

六、动态属性的设置

1)内置函数setattr:设置属性

    参数一:类名/对象

    参数二:属性名

    参数三:属性值

2)内置函数getattr:获取属性

    参数一:类名/对象

    参数二:属性名

3)内置函数delattr:删除属性

    参数二:类名/对象

    参数二:属性名

 

相关推荐