python之面向对象编程

2018-09-14  本文已影响0人  ivan_cq

面向过程:侧重于怎么做。
1、把完成一个需求的所有步骤 从头到尾 逐步实现
2、根据开发要求,将某些功能独立的代码封装成一个又一个函数
3、最后完成的代码,就是顺序调用不同的函数。
特点:
注意步骤与过程,不注意职责分工;
如果需求复杂,代码会变的很复杂;
开发复杂项目,没有固定的套路,开发难度大

面向对象:谁来做?
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法。
1、在完成某一个需求前首先确定职责---要做的事(方法)
2、根据职责,确定不同的对象,在对象内部封装不同的方法(多个)
3、最后完成代码,就是顺序让不同的对象调用不同的方法。
特点:
1、注重对象和职责,不同的对象承担不同的职责
2、更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供固定的套路
3、需要在面向过程的基础上,在学习一些面向对象的语法

python java c++
类: 是对一群具有相同特征或行为的事物的一个统称,不能直接使用(比如:飞机没有制造图纸不能上天)
特征: 属性
行为: 方法
对象: 由类创建出来的一个具体的存在,可以直接使用(用图纸造出来的飞机可以飞上天)
在程序开发中: 应该先有类 再有对象
类的设计
1、类名 这类事物的名字,满足大驼峰命名法
大驼峰命名法
每一个单词首字母大写’单词与单词之间没有下划线
2、属性 这类创建出的对象有什么特征
2、这个类创建出的对象有什么样的行为

哪一个对象调用的方法,self就是哪一个对象的引用
在类封装的方法内部,self就表示当前调用方法的对象自己
调用方法时,程序员不需要传递self参数(但是定义时,第一个参数必须是self)
在方法内部:可以通过self.访问对象的属性
在方法内部:可以通过self.调用其他的对象和方法

生命周期:一个对象从调用类名()创建,声名周期开始。一个对象的del方法一旦被调用,生命周期就算结束

私有属性和私有方法
应用场景及定义方式
应用场景: 在实际开发中,对象的某些属性或者方法可能只希望在对象的内部使用,而不希望在外部被访问到。
私有属性就是对象不希望被公开的对象
私有方法就是不希望公开的方法
定义方法
在定义属性或者方法时,在属性名前增加两个下划线,定义的就是私有属性或方法。


封装 继承和多态
1、封装是面向对象编程的一大特点
2、面向对象编程的第一步,将属性和方法封装到一个抽象的类中,因为类不能直接使用
3、外界使用类创建对象,然后让对象调用方法
4、对象方法的细节都被封装在类的内部

案例1:
小明喜欢跑步
体重75公斤
每次跑步会减肥0.5公斤
每次吃东西会增加1公斤
小美的体重是45公斤


案例2:
需求:摆放家具
1.房子有户型,总面积和家具名称列表
新房子没有任何的家具
2.家具有名字和占地面积,其中
床:占4平米
衣柜:占2平面
餐桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
被使用的类应该先开发


注意return的使用

将return注释掉之后得到的结果

案例3
需求:
1.士兵瑞恩有一把AK47
2.士兵可以开火(士兵开火扣动的是扳机)
3.枪 能够 发射子弹(把子弹发射出去)
4.枪 能够 装填子弹 --增加子弹的数量




**面向对象的三大特征

继承的传递性:(爷爷,父亲,儿子)
c 类从b类继承,b类从a类继承
那么c类就拥有a类和b类的所有属性和方法
子类拥有父类以及父类的父类中封装的所有属性和方法
Cat类是Animal类的子类,Animal类是Cat类的父类,Cat从Animal类继承
Cat类是Animal类的派生类,Animal类是Cat类的基类,Cat类从Animal类派生

重写父类方法
1- 覆盖父类的方法
2- 扩展父类的方法





初始化方法也是方法

多继承的特殊情况

私有属性和私有方法
1.子类对象不能在自己的方法内部,直接访问父类的私有属性和私有方法
2.子类对象可以通过父类的公有方法间接访问到私有属性或私有方法
私有属性,私有方法是对象的隐私,不对外公开,外界以及子类都不能直接访问
私有属性,私有方法常用做一些内部的事情


子类访问父类的私有属性和方法

新式类和旧式(经典)类:
object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看
新式类:以object为基类的类,推荐使用
经典类:不以object为基类的类,不推荐使用
在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类--python3.x中定义的类都是新式类
在python2.x中定义类时,如果没有指定父类,则不会以object作为基类
推荐使用新式类
新式类和旧式类在多继承时---会影响到方法的搜索顺序
为保证编写的代码能够同时在python2.x和python3.x运行
今后在定义类时,如果没有父类,建议统一继承自object

上一篇 下一篇

猜你喜欢

热点阅读