面向对象--基础总结
面向对象
面向对象的程序设计的由来
什么是面向对象的程序设计?为什么要有它
面向对象之前---面向过程
面向过程:核心是过程,指的是解决问题的步骤。面向过程的设计好像一条流水线,是一种机械的思维方式。
优点:复杂的问题流程化,进而简单化。
缺点:可扩展性太差。
应用场景:一旦完成基本很少改变的场景。
面向对象:核心是对象。面向对象更加注重对现实世界的模拟。python中一切皆对象。是一种‘上帝式’的思维方式。
优点:解决了程序的扩展性。对某一个对象的修改,会立刻反映到整个体系中。
缺点:编程的复杂程度高。盲目的使用面向对象的思想,徒增编程的难度。
无法精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题。
应用场景:需求经常变化的软件。
注意:面向对象的程序设计并不是全部。对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性。
程序设计思想发展史
类与对象
对象:是特征与技能的结合体
类:是面向对象设计最重要的概念,类是一系列对象相似的特征与技能的结合体
先有鸡还是还有蛋的问题!
在现实世界中:现有对象,再有类
在程序中:务必保证先定义类,后产生对象
总结:类为我们提供了一种能够将数据和操作数据的方法结合到一起的解决方法。
属性查找
类有两种属性:数据属性和函数属性
1:类的数据属性是所有对象共享的
2:类的函数属性是绑定给对象用的
对象的属性查找属性:先在自己的名称空间中找,然后在类中找,然后在父类中找,最后找不到就抛出异常。
绑定到对象的方法的特殊之处
1.类中定义的函数(没有被装饰器装饰)是类的函数属性,类可以调用,但是必须遵循函数的参数规则,该传参数传参数。
2.类中定义的函数(没有被装饰器装饰),主要是给对象使用的,并且是绑定给对象的,谁来调用就会把自身当作第一个参数传入。
注意:绑定到对象的方法的这种自动传值的特征,决定了类中定义的函数都要默认写一个参数self,self可以是任意名字,但是约定俗成地写为self。
类即类型
python中一切皆为对象,且python3中类型和类是一个概念,类型就是类。
>>>list
<class 'list'>