Python学习第八天——面向对象编程基础

什么是面向对象编程?
首先看比较正式的说法说明什么是面向对象编程:
把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。
看一下知乎上更通俗易懂的说法:
之前我们说过“程序是指令的集合”,我们在程序书写的语句在执行时会变成一条或多条指令然后由CPU去执行。函数是把相对独立切经常重复使用的代码放置到函数中,在需要使用时只需要调用函数即可;如果一个函数功能过于复杂和臃肿,又可以进一步将函数继续切分为子函数来降低系统的复杂性。
所以所谓编程就是程序员按照计算机的工作方式控制计算机完成各种任务。最重要的是我们开发一个复杂的系统时,代码的复杂性会让开发和维护工作都变得举步维艰。
程序员圈子内的人都知道,现实中没有解决上面问题的银弹,真正让大家看到希望的是面向对象的编程思想,按照这种编程理念,程序中的数据和操作数据的函数是一个逻辑上的整体,我们称之为“对象”,而我们解决问题的方式是创建出需要的对象并向对象发出各种信息,多个对象的协同工作最终可以让我们构造成复杂的系统来解决现实中的问题。
类和对象:
简单说。类是对象的蓝图和模板,而对象是类的实例。由此可以看出类是抽象的概念,对象是具体的东西。在面向对象编程的世界里,一切皆是对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定义出一个叫做“类”的东西。
定义类
python中可以使用关键字class定义类,然后在类中通过之前学习过的函数来定义方法,这样就可以将对象的动态特征描述出来。
在这里插入图片描述
创建和使用对象
访问可见性问题
在面向对象编程中,通常会将对象的属性设置为私有的或者受保护的,简单的说就是不允许外界访问,而对象的方法通常是公开的,因为公开的方法就是对象能够接受的消息。
在python中,属性和方法的访问权限只有两种,也就是公开的和私有的,如果希望属性是私有的,在给属性命名时可以用两个下划线作为开头。但是python并没有从语法上严格保证私有属性或方法的私密性,只是给私有的属性和方法换了一个名字来妨碍对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们。之所以这样设定,“we are all consenting adults here"。因为绝大多数程序员都认为开放比封闭要好,而且程序员要自己为自己的行为负责。
在实际开发中,不建议将属性设置为私有的,因为这会导致子类无法访问,多以大多数python程序员会遵循一种命名惯例就是让属性名以单下划线开头来表示属性是受保护的,本类之外的代码在访问这样的属性时应该要保持慎重。这种做法并不是语法上的规则,单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻。
面向对象的支柱
三大支柱:封装、继承和多态。我们的理解是“隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口”。我们在类中定义的方法其实就是把数据和对数据的操作封装起来,在我们创建对象后,只需要给对象发送一个消息(调用方法)就可以执行方法中的代码,也就是我们只需要知道方法的名字和传入的参数(方法的外部视图),而不需要知道方法内部的实现细节(方法的内部视图)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值