python之面向对象小结

面向对象是什么(概念)

将函数和数据封装成一个整体,比如我们人,就是这样的一个整体,函数就相当于人的行为,比如吃饭睡觉等。数据就相当于人的属性,比如身高,体重等。

##定义类
class Person():    #括号里面是继承的父类,默认是object
    name="张三"
    age=18
    def show(self):
        print(f"姓名是{Person.name},年龄是{Person.age}")

##实例化类,创建一个对象
zs=Person()
zs.show()

运行结果:
在这里插入图片描述

面向对象和面向过程的区别

面向对象的编程方式,本质上操作的是一个个的对象,就拿人来说,假设要让一个人一睡觉,那么你首先要实例化人的一个对象,然后对这个对象进行操作。你需要下达睡觉的指令,这个人的对象就会自己去睡觉,至于怎么睡,睡哪儿还有具体的实现方式外部并不知道,只有人这个对象知道。我们关心。至于具体是怎样走的,不需要我们关心
面向过程的编程方式是我们刚开始学习编程语言就一直用到的。这种方式非常的直观,需要写一个功能,直接写其实现的方法即可。还是以吃饭的例子为例,直接的让他移动到目标点就行了。外部是能看到具体的实现步骤的。
在这里插入图片描述

面向对象的优缺点

优点

通俗来说:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护

具体表现为:
1、通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;

2、我们可以在标准的模块上(这里所谓的"标准"指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;即重用性和可扩展性

3、数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭;

4、允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;

5、允许将问题空间中的对象直接映射到程序中;

6、基于对象的工程可以很容易的分割为独立的部分;

7、以数据为中心的设计方法允许我们抓住可实现模型的更多细节;

8、面向对象的系统很容易从小到大逐步升级;

9、对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;

10、更便于控制软件复杂度。

缺点

性能比面向过程低 ,比较抽象。并且在实例化对象的时候,开销比较大。
具体可以看这篇博客:
参考博客连接

面向对象的三大特点

有的观点也把抽象作为了面向对象的一个特点,实际上抽象是面向对象的一个本质的东西

封装

封装就是将内部方法的实现过程和步骤隐藏起来,只暴露方法名让外部调用。通俗来说就是让我们能够使用方法,但是仅限于使用,因为我们完全不知道是如何实现这个功能的。就相当于打游戏的时候,我们只知道这个大招要怎么使用,但是具体的放大招的实现方法,我们完全不知道。这是为了保护代码的私有性。
学术性一点来讲就是:
两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;另一层含义指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。

继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的目的是实现代码的重用
继承的优点:
(1)提高类代码的复用性
(2)提高了代码的维护性
(3)使得类和类产生了关系,是多态的前提(它也是继承的一个弊端,类的耦合性提高了)
继承的缺点:
耦合度高就会造成代码之间的联系越紧密,代码独立性越差

多态

1.关于多态,Python有这样一句话:python中没有多态,python中一切皆多态
python里面不支持多态(因为python没有用指针、或者是父类去表示子类型,然后实现其方法)。
python处处是多态(所有类都继承object)。多态其实就是行为的封装,python是鸭子类型的多态(不关心对象是什么类型,只要有这种表现行为就可以认为能够使用这种行为的函数)。

2.python里面是鸭子类型的多态。(不管是不是真的鸭子,只要行为像鸭子,就可以认为该事物是鸭子)。因为python是动态语言,动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

python里面有多态和多态性之分

多态就是指同一个事物有不同的形态。多态又可分为函数的多态和对象的多态。
对象的多态:子类的实例对象既属于子类,又属于父类。
函数的多态(即多态性)指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。也就是说一种调用方式,有不同的执行效果。
在面向对象中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。多态性是 : 一个接口,多种实现

多态性的好处:
1.增加了程序的灵活性,以不变应万变,不论对象千变万化,使用者都是同一种形式去调用
2.增加了程序额可扩展性,使用者无需更改自己的代码
3.实现接口重用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值