面向对象基础概念
面向过程编程
注意:面向过程与函数编程时完全不同的
优点:将复杂的问题拆分为若干个简单问题,然后按照顺序一步一步完成从使得问题,简单化,流程化
缺点:由于代码严格按照顺序编写 导致扩展性差类似一条流水线 一旦设计完成就只能完成某种固定的任务后期如果需要修改需求 则需要完成重新设计
使用场景:对扩展性要求较低的应用程序例如:操作系统内核,运维编写的shell脚本程序等
面向对象编程(OOP)
是一种编程思想关键在于对象,对象是一系列特征和行为的结合体
使用面向对象编写程序时 需要将程序员自身看作是上帝,不是去思考具体的实现步骤重点关注的是什么样的对象可以完成这个事情
类与对象
类型 类别 分类
类是一堆对象 相似的特征和相似的行为的结合体,是一种抽象概念
类和对象的关系
生活中 先有对象,再有类,程序中 先有类再由类产生对象,可以把类当作是一个对象的模板,或者是对象的工厂
例如选课系统中涉及到的对象 学生老师等。。。
产生对象调用类产生一个对象创建对象后可以通过点来增加属性 但是不推荐这么做,而且代码冗余
名称空间和空间关系
在实例化对象的时候会自动执行该函数 并且自动把刚创建出来的对象传进来 作为第一个
属性查找顺序:对象既可以访问对象名称空间中的内容 也可以访问类中的,如果出现相同的优先访问类中的
顺序对象————》类。对象间名称空间是相互独立的,类中的属性被所有对象共享
绑定方法
方法指的就是函数
其实就是把函数和对象进行了绑定,
对象本质就是一个数据容器 里面存储多个属性
函数是用于处理数据的代码段对象就是 将数据和处理数据的函数绑定在一起
绑定方法的好处是只要拿到了对象就同时拿到了要处理的数据 以及处理数据的方法
绑定方法的好处是只要拿到了对象
当使用对象来调用绑定方法时会自动将对象作为第一个参数传给绑定方法
当使用类来调用绑定方法时 需要手动传入第一个参数
绑定方法与非绑定方法,默认情况下 类中的方法是绑定给对象的,类中的方法 分为两类
对象的绑定方法(默认)
类的绑定方法
语法:使用@classmethod装饰器
使用场景:当一个方法的执行逻辑中需要访问类中的属性时,就应该作为类的绑定方法
2.非绑定方法
语法:给方法加上@staticmethod装饰器
使用场景:当一个方法的执行逻辑中不需要访问对象中也不需要访问类中的数据时
就应该定义为非绑定方法
场景总结:
如果这个方法需要访问对象中的数据 那就作为 对象绑定方法(默认)
如果这个方法需要访问类中的数据 那就作为类绑定方法(@classmethod)
如果这个方法不需要访问类和对象中的数据 那就作为 非绑定方法(@staticmethod)