python 的封装,(继承和多态)

面向对象编程的三个基本特征是:封装,继承,多态。下面就python来理解一下这三个特征。

1.封装

  从表面上看,对象封装了对象的属性和方法,使之成为一个独立性很强的模块。
另外,封装可以看作一个屏障,一种信息隐蔽技术,防止该类被其他类任意访问,必须通过指定的方式对该类进行访问,增加了代码的安全性。
  从生活中的例子看,开车的人并不需要明白汽车的工作原理,汽车的工作原理对用户封装起来,用户只需要通过方向盘,油门等等指定的方法操纵汽车即可。
从python的例子看,例如列表list是python的一个序列对象,我们对列表里的数据进行排序等操作,我们直接是调用list.sort()方法来操作的。可以看出 python的列表就是一个对象,它提供了若干种方法让我们对列表进行操作,但我们不知道列表对象里有哪些变量和方法,这就是封装的思想。

2.继承和多态

个人认为,继承和多态应该放在一起来理解
继承是指子类自动共享父类之间的数据和方法的机制,子类继承父类的方法,并作出自己的改变和扩展。比如在学习pytorch写神经网络是,model都是继承的torch.nn.Module。

class Animal(object):   ##父类
    def run(self):
        print ('Animal is running')
class Dog(Animal): ##子类继承父类
    def eat(self): ##子类扩展自己的方法
        print('Animal is eatting')
dog = Dog()   ##实例
dog.run()     ##子类调用父类方法

继承可以一级一级继承下来,如下图,而任何类,归根结底,都可以归于继承根类object。

在这里插入图片描述

  继承的意义,不仅仅是在于为了少写代码,更大的作用,在于实现多态。一句话概括,多态是指,不同的类对同一方法响应不同的行动,子类对父类方法的重写。

关于面向对象和面向过程的理解,先放一篇博客,日后再细细整理。
面向对象的三大特征是?能不能用通俗的语言进行解释?
继承和多态 廖雪峰
如何通俗易懂地举例说明「面向对象」和「面向过程」有什么区别?

发布了61 篇原创文章 · 获赞 17 · 访问量 2978

猜你喜欢

转载自blog.csdn.net/qq_35027690/article/details/103728300