- python高阶
- 面向对象
- 基本概念
- 类(class):描述具有相同属性和行为的对象的集合。比如学生类(学号、姓名、班级、学习)
- 对象(object):通过类定义的数据结构的实例,是对类的具体实现
- 属性:描述类的静态特征
- 类属性:每一个对象都具有并且值相同,比如学生的国籍
- 实例属性:每一个对象都具有,但是值可能不同,比如学生姓名、年龄等
- 方法:描述类的动态行为
- 类方法:通过装饰器@classmethod声明,常通过类调用,一般用于修改类属性的值
- 实例方法:类中最常用的方法,常通过对象调用
- 静态方法(了解):通过装饰器@staticmethod声明,常通过类调用,通过是一些和类本身无关的方法
- 类的声明
- 语法:
- 类名:符合标识符命名规范,通常每个单词首字母大写
- 例1:声明一个学生类
- 属性:学号、姓名、年龄、国籍、班级
- 方法:学习
- 语法:
- 对象的声明(实例化)
- 语法:对象名 = 类名([实参1,实参2,......])
- 例1:实例化Student类
- 例1:
- 声明一个学校类,学校类中声明一个类属性表示学校的总人数,声明一个类方法用于更新学校总人数
- 声明一个学生类,包含学生的基本信息,每实例化一个学生,则学校的总人数+1
- 内置方法
- __new__(),new方法,在实例化时自动调用,用于创建对象
- __init__(),构造方法,初始化对象,在实例化时自动调用
- __del__(),析构方法,销毁对象,在对象生命周期结束时自动调用,删除对象
- 例:
- 例2:
- 声明一个学校类,学校类中声明一个类属性表示学校的总人数,声明一个类方法用于更新学校总人数
- 声明一个学生类,包含学生的基本信息,每实例化一个学生,则学校的总人数+1
- 例3:
- 声明一个学校类,学校类中声明4个类属性分别表示学校的总人数、高一、高二、高三年级的人数,声明一个类方法用于更新学校总人数以及对应年级的人数
- 声明一个学生类,包含学生的基本信息(姓名、年龄、班级-高三二班),每实例化一个学生,则学校的总人数+1
- 例4:
- 声明一个资金类,有3个类属性,分别保存销售总额,食品类销售额、服饰类销售额;声明一个类方法用于更新销售总额、以及不同商品类别的销售额
- 声明一个销售类,包含销售的商品名称、类别、单价、销售数量,销售完成后需要更新销售总额以及对应类别商品的销售额
- 例5:城防系统
- 在城墙(自定义城墙总面积)上安置各类的防御装备,包括(占地面积10),高射机枪(占地面积5),单兵装备(占地面积2),阵地机枪(占地面积7)
- 程序开始后随机生成一个防御装备,将其安置在城墙上,重复这个过程直到城墙上的可使用面积小于2为止。输出已经安置的各种设备的数量。
- 例6:投篮训练,统计在2分钟内的训练成绩
- 声明球员类,包含球员的基本信息(姓名、历史投篮命中率,训练次数、命中数)、投篮方法
- 每次投篮后随机调整1-3秒
- 命中率模拟:比如命中率为90%,可以声明一个列表或者字符串,其中包含10个元素(1/0,1表示命中,0表示未命中),每次投篮随机选择一个作为投篮结果
- 对象组合
- 用于描述类与类之间的关系,多个类之间存在依赖关系,需要在A类中调用B的属性或者方法
- 方式
- 1、在A类的实例方法中传入B类的对象,通过该对象调用B类中的属性和方法(A类、B类相互依赖)
- 2、在A类的构造方法中传入B类的对象,通过该对象调用B类中的属性和方法(A类依赖于B类)
- 例1:饲养员与动物
- 有10个房间,每个房间中随即放入老虎或者羊
- 饲养员不知道每个房间中的动物类型,可以选择敲门(房间中的动物发出叫声,同时体重-5)获知动物类型。饲养员给动物喂食,喂正确则体重+10,错误了则体重-10(老虎吃肉,羊吃草)
- 游戏时间1分钟,统计每个房间中动物的体重
- 分析:完成整个事件有哪些对象,这些对象具有哪些属性和方法,将对象的属性和方法抽象为类
- 老虎
- 属性:名字、体重
- 方法:吃东西、发出叫声
- 老虎
- 基本概念
- 面向对象
Python高阶
最新推荐文章于 2024-05-09 16:43:56 发布