记录学习的点点滴滴-150天从python小白到大神的转变(day17-19)
本周结束也就意味着python基础课的结束。python基础课大致分为以下几个板块:数据类型,函数,python中的模块,包,文件操作,异常处理,正则表达式,以及面向对象编程。本节对面向对象编程的一些基础知识进行总结。
python是一门面向对象的编程语言。在这个版块中,主要内容包括编程思维的分类,类和对象,内置类属性的介绍,魔法方法的介绍(运算符的重载),继承,以及内存管理和拷贝原理。
-
编程思维的分类
学习了接近一个月的python,思维依然停留在面向过程编程。希望在学完这门课程之后,能成功的转变成函数式编程。最好的状态是面向对象编程。面向对象编程,需要从实际出发考虑问题,同时需要扎实的基础功。
-
类(class)
类是具有相同功能和属性的对象的集合。类是抽象的,比如人类,汽车类,狗类。一个完整的 类内容中应该包括属性和方法。
定义类的语法:
class 类名:
类的说明
类的内容
类的内容
类的内容包含属性和方法。属性是变量,用来保存数据的。类中的方法,本质是函数,用于实现类的功能。
类中属性的分类:
类中的属性可以分为类属性和对象属性。
类属性: 如果属性值不会随着对象的改变而改变,就可以把这个属性设置成类属性。比如人这个类中的人口数量,小汽车类中的轮胎个数。
如何定义 如何调用 定义在类的里面,函数的外面 类名.属性名 对象属性:如果属性值会随着对象的改变而改变,就可以把这个属性设置成对象属性。比如人的姓名,年龄。对象属性在调用之前,需要先创建一个对象
如何定义 如何调用 以 self.属性值 = 值 的形式定义在__init__方法中 对象名.属性 类中方法的分类:
在类中的方法有三类,一是对象方法,也是用得最多的方法。二是类方法,三是静态方法。
方法名以及如何定义 如何使用 特点 对象方法
(直接定义在类中)对象名.方法名 自带self参数,调用的时候可以不赋值,指向当前对象,谁调用就指向谁 类方法
(在定义之前添加名为@classmethod的装饰器)类名.方法名 自带cls参数,调用的时候可以不赋值,指向当前类。 静态方法
(在定义之前添加名为@staticmethod的装饰器)类名.方法名 定义在类中的普通函数,可以有参数,也可以没有参数 在类中,如何选择最合适的方法:
- 当在实现类的具体功能时,如果需要用到对象属性,就需要选择对象方法。
- 当在实现类的具体功能时,如果不需要用到对象属性但是需要用到类属性,就需要选择类方法。
- 当在实现类的具体功能时,如果既不需要对象属性,也不需要类属性,就可以选择静态方法。
# 两种属性和三种方法
class SmallCar:
cheer_num = 4 # 类属性
def __init__(self, brand, color, price):
self.brand = brand
self.color = color # 对象属性
self.price = price
def __repr__(self): # 定制打印方式
result = str(f'对象属性:'+' '+f'品牌:{self.brand}'+' '