python 类创建-相关的基础概念(一)

1、什么是类 class

  【1】拥有相同属性和行为的对象分为一组,即为一个类

  【2】类是用来描述对象的工具,用类可以创建此类的对象(实例)

  【3】类用于描述对象的行为和属性

  【4】类用于创建此类的一个或多个对象(实例)

2、创建类 

  class 语句

  class 类名(继承列表):#继承列表指的是从哪些类继承的,即此类的基类有哪些

    '类的文档字符串'

    实例方法的定义

    类变量的定义

    类方法的定义(@classmethod)

    静态方法的定义(@staticmethod)

  注意:

    【1】类名必须为标识符

    【2】类名实质上就是变量, 它绑定一个类

3、类的文档字符串

  【1】类内第一个没有赋值给任何变量的字符串为类的文档字符串

  【2】类的文档字符串可以用类的 __doc__属性访问

4、类的实例的创建 (构造函数创建)

  变量名(实例)= 类名() #用类名创建一个实例对象用变量绑定

  【1】 实例有自己的作用域和名字空间,可以为该类的对象添加实例变量(也叫属性)

  【2】 实例可以调用类方法和实例方法

  【3】 实例可以访问类变量和实例变量

5、类变量

  类变量是类的属性,此属性属于类,不属于此类的实例

  作用: 通常用来存储该类创建的对象的共有属性

  注:

    【1】类变量可以通过该类直接访问

    【2】类变量可以通过类的实例直接访问

    【3】类变量可以通过此类的对象的__class__属性间接访问

6、【实例方法】

    用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为

    【1】 实例方法实质是函数,是定义在类内的函数

    【2】 实例方法至少有一个形参有,第一个形参代表调用这个方法的实例,一般命名为 'self' 

    【实例方法调用】

      【1】实例.实例方法名(调用传参)  #调用传参,调用实例方法需要传递的参数

      【2】类名.实例方法名(实例,调用传参)

    class 类名(继承列表):

      def 实例方法名(self, 参数1, 参数2, ...):

        '文档字符串' 

        pass

7、【实例属性】

     每个实例对象可以有自己的变量,称为实例变量(也叫属性)

      【作用】记录每个对象自身的数据

     实例.属性名 = xxx

     赋值规则:在类的外部创建或者实例方法内

          【1】首次为属性赋值则创建此属性

          【2】再次为属性赋值则修改属性的绑定关系 

8、【初始化方法】

    对新创建的对象添加属性

    【1】 初始化方法名必须为 '__init__' 不可改变

    【2】 初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self 传入 __init__ 方法

       #构造函数:类名()

    【3】 构造函数的实参将通过__init__方法的参数列表传入到 '__init__' 方法中

    【4】 初始化方法内如果需要return 语句返回,则只能返回None

    class 类名(继承列表):

      def __init__(self [, 形参列表]): # [] 表示其可以省略

        pass   

9、【析构方法】

      析构方法在对象被销毁时被自动调用 python建议不要在对象销毁时做任何事情,因为销毁的时间难以确定

       class 类名:

        def __del__(self): 

          pass

10、类方法@classmethod

    类方法是用于描述类的行为的方法,类方法属于类,不属于类的实例

    说明:

      类方法需要使用@classmethod装饰器定义

      类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'

      类和该类的实例都可以调用类方法

      类方法不能访问此类创建的实例的属性

11、静态方法 @staticmethod

    静态方法是定义在类内部的函数,此函数的作用域是类的内部

    说明:

      静态方法需要使用 @staticmethod装饰器定义

      静态方法与普通函数定义相同,不需要传入self实例参数和cls参数

      静态方法只能凭借该类或类创建的实例调用

      静态方法不能访问类变量和实例变量(属性)

12、实例方法, 类方法, 静态方法, 函数 

    不想访问 类内 和 实例内 的变量,用静态方法

    只想访问类内变量,不想访问实例变量,用类方法

    既要访问内变量,也想访问实例变量用实例方法

    函数与静态方法相同,只是静态方式的作用域定义在类内

    

    

 

 

posted @ 2020-12-28 18:10  昱成  阅读(102)  评论(0编辑  收藏  举报