day14-类和对象

day14-类和对象

一、编程思想

  • 面向过程编程:算法和逻辑
  • 函数式编程:函数
  • 面向对象编程:类和对象

二、类和对象

1.什么是类,什么是对象

类就是拥有相同功能和相同属性的对象的集合 — 类是抽象的

对象就是类的实例 — 对象是具体的

2.类的声明

class 类名:
    类的内容

class —— 关键字

类名 —— 程序员自己命名;是标识符但是不能是关键字 ; 采用驼峰式命名,并且首字母大写,见名知义

类的内容 —— 类的说明文档、类中的函数(相同的功能)、类中的属性(相同的属性)

3.创建对象

对象 = 类()


三、对象方法

1.类中的函数

生命在类中的函数又叫方法,类中的方法分为三种:对象方法、类方法、静态方法

(1)对象方法

  • 直接声明在类中的函数,自带一个self 函数
  • 对象方法需要通过对象.函数名()的方式调用
  • 通过对象用对象方法的时候,self不需要传参;系统会自动将当前对象传给self(谁调用就指向谁)

强调:不要用类去调用对象方法


四、init方法

1.什么是init方法

__init__是类中的一个魔法方法,在创建对象的时候会被自动调用

如果init方法中除了self以外还有其他的参数,需要通过构造方法来给__init__传参


五、类中的属性

1.类中的属性:对象属性、字段

(1)字段 —— 声明在类里面函数的外面的变量
  • 怎么使用:通过类.字段的方式去使用
  • 什么时候用:属性值不会因为对象不同而不一样,这样的属性就声明成类的字段
(2)对象属性
  • 怎么声明:以self.属性名 = 值的方式声明在__init__方法中
  • 怎么使用:通过对象.属性名的方式去使用
  • 什么时候用:属性值会因为对象不同而不一样,这样的属性就声明成对象属性

重写repr方法,来制定对象的打印格式(默认对象地址) 返回值必须是字符串


六、对象属性的增删改查

1.对象属性

python中对象属性支持增删改查操作

2.查 —— 获取对象属性的值

  • 对象.属性 —— 获取对象指定属性的值,如果属性不存在,报错!

  • getatter(对象,属性名) —— 获取对象指定属性的值,如果属性不存在,报错!

    getattr(对象,属性名,默认值) —— 获取对象指定属性的值,如果属性不存在,不会报错,返回默认值

3.增/改 —— 给对象添加属性/修改对象属性的值

  • 对象.属性 = 值 —— 当属性不存在就给对象添加属性;如果属性存在就修改属性的值
  • setattr(对象, 属性名,值)

4.删 —— 删除对象属性

  • del 对象.属性
  • delattr(对象, 属性名)

slots魔法:可以通过给类的__slots__字段赋值,来约束当前类的对象最多有哪些属性


七、内置类属性

1.什么是内置类属性

创建类的时候,系统字段为这个类提供的属性

  • __name__ —— 类的字段,获取类的名字

  • __doc__ —— 类的字段,获取类的说明文档

  • __class__ —— 对象属性,获取对象对应的类

  • __dict__ —— (1)类的字段,获取类中的字段(用得少)

    ​ (2)对象属性,获取对象的所有属性和其对应的值,以字典的形式返回(用得多)

    ​ 注意:如果给类的__slots__属性赋了值,那么这个类的对象就不能使用__dict__去获

    ​ 取所有的属性

  • __module__ —— 类的字段,获取类所在的模块(类是在哪个py文件中声明的)返回模块名

  • __bases__ ——类的字段,获取当前类的父类

你可能感兴趣的:(day14-类和对象)