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