Python学习——"面向对象的三大特征"

什么是面向对象?

学习了这么长时间的python,经常会接触到一些词汇,例如“面向过程”、“面向对象”,今天学习了面向对象,就说一下面向对象的概念吧。那到底什么是面向对象呢?

面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。

这是一个很官方的回答,可能对于我们新手来说,还是不太了解到底什么是面向对象,那我简单的举个例子,更清晰明了的理解这个概念。

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

2、去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?这就是1是面向过程,2是面向对象。

面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃鱼香茄子,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成鱼香茄子吧,提高了可维护性。总的来说就是降低耦合,提高维护性!

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。

不知道这么说,你有没有理解。

说完了面向对象这个概念,我们来说下它最主要的三个特征。

三大特征

面向对象有三大特征,分别是封装、继承和多态。

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

继承:提高代码复用性;继承是多态的前提。

多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

1、封装

面向对象的程序设计中,某个类把所需要的数据(类的属性)和对数据的操作(类的行为)全部都封装在类中,分别称为类的成员变量和方法(或成员函数)。这种把成员变量成员函数封装在一起的编程特性称为封装

私有成员变量:Python中,以两个下划线‘__’开头的变量都是私有成员变量,私有的成员变量只能在类的内部访问。
公有成员变量:除私有成员变量以外,其余的变量都属于公有成员变量,而共有的公有的成员变量可以在类的外部进行访问。

公有的成员方法和私有的成员方法也是通过名字来区分的

公有方法:公有方法可以在类的外部通过对象名进行访问。

私有方法:双下划线‘__’开头的方法是私有成员方法。类的私有方法只能通过对象名(在类内部也就是self)在类的内部进行访问。

创建对象后,Python解释器默认调用__init__()方法。当删除一个对象时,Python解释器也会默认调用一个方法,这个方法为__del__()方法。


def __del__(self):
1、python解释器执行完整个代码之后会默认最后调用对象的__del__()
2、如果有多个对象,有几个对象,python解释器执行完毕的时候就是调用几遍__del__()
3、如果手动删除时(del)删除完成就会执行__del__(),当使用del 把内存的所有应用删除,立刻调用__del__方法
del xxx 不会主动调用__del__方法,只有引用计数==0时,__del__()才会被执行,并且定义了__del_()的实例无法被Python的循环垃圾收集器收集,所以尽量不要自定义__del__()。一般情况下,__del__() 不会破坏垃圾处理器。

2、继承

子类在继承的时候,在定义类时,小括号()中为父类的名字父类的属性、方法,会被继承给子类私有属性(私有类属性)和私有方法不被继承。


私有的属性,不能通过对象直接访问,但是可以通过方法访问
私有的方法,不能通过对象直接访问
私有的属性、方法,不会被子类继承,也不能被访问
Python中是可以多继承的父类中的方法、属性,子类会继承.
类名.__mro__方法的作用打印多重继承的继承方法顺序

 重写父类方法

所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法
1、super调用父类属性super并不是一个函数,是一个类名.。

Super().方法名,可以调用父类的方法(不用传参,作用是调用父类的方法,传的是子类实例的值)

supper是类名。也可以用父类的类名直接调用:类名.方法名(self)

3、多态

多态:定义时的类型和运行时的类型不一样,此时就成为多态。多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值