第十二讲
一、封装
封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正式由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。
看图理解一下:
我们在给实例化对象传递一些属性的时候,就是封装的一个过程:
二、继承
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类。继承机制的作用是实现了代码的复用,多个类公用的代码部分可以只在一个类中提供,而其他类也只需要继承这个类即可。
我们来回顾下,新式类的建立写法为:
class Demo(object):
pass
其实这里的object
是一个父类名,该类里面封装有很多方法,新建立的Demo类是可以调用其中的方法的,我们举个简单的例子来说明一下:
class Father(object):
def run(self):
pass
def eat(self):
pass
class Son(Father):
pass
Tom = Son()
Tom.run()
Tom.eat()
我们来看一下上面的例子,Father是父类,也叫基类,Son是子类,也叫派生类。在建立Son类的时候,括号里面写的是Father,如此一来就可以继承Father类里面的方法了,在实例化对象后我们可以使用,而不需要再在Son类中编辑一遍。
在python3中继承机制是有优先级的,一般来讲,子类在调用某个方法或变量的时候,首先在自己内部(最深)查找,如果没有找到,则开始根据继承机制在父类里面找,一层一层往上寻。例如下图中的Son类,就会现在自己内部查找方法,如果没有再去Father类寻找,如果Father类里面也没有就去GrandFather类里面寻找。
继承在使用python开发软件的时候经常使用,一般来说都是借助已有的框架来实现自己想要的功能,但是在具体操作中我们想要实现的确切功能有时候和父类的某一个方法不一致,或者说我们想要添加一些其它的功能,在保证不对源代码实现修改的前提下,我们就需要一些相关的操作来满足我们的需要,比如说我们重写一下某一方法,如:
class Father(object):
def run(self):
print('Father likes running')
class Son(Father):
def run