前文中我们介绍了什么是堆栈,如何用过程化的程序创建堆栈及其不足之处。为了弥补这些不足,我们可以用面向对象的方式改进堆栈创建的方式。不论用什么方法,我们的目的都是要创建堆栈,并且用列表存储堆栈。当然,不是说一定要用列表存储堆栈,只是本文中使用列表存储堆栈。
下面,我们就用最基础的面向对象的方法开始,介绍如何创建堆栈。
首先,创建名叫my_stack2的类。
我们希望这个类有两个功能:
首先,这个类能够存储堆栈。也就是说,我们需要把列表存储在这个类之中。
其次,我们不希望所有人都能看到这个列表,所以要隐藏该列表。
那么,如何实现这两个目标呢?与其他语言不同的是,Python无法定义一个参数存储堆栈,而是需要通过特殊的语句手动实现。这个听起来有点复杂,如何实现呢?
简单地讲,我们可以通过类之中的特殊函数实现上面的两个目标。这个函数有两个特点:
命名又特殊之处
当创建新的对象时,该函数被隐含地调用
这个函数就是构造器(Constructor)。顾名思义,构造器就是用来构造新的对象。构造器包含了对象的结构,必须在初始化的时候运行。下面,就把构造器加入类中:
这里有几点需要说明:
构造器的名字一定叫__init__
构造器至少有一个参数。这个参数用来表示新创建的对象。我们可以通过这个参数控制对象,给对象添加新的属性。
参数约定俗成的名字叫self。虽然这只是Python中的一个习惯,而且不遵守这个习惯并不是错误,但是为了程序的可读性,建议遵守这个习惯。
运行上面的程序,输出结果为:
健谈始于戊戌年(2018) |
注意:在运行程序时,我们调用了构造器。但是并没有像调用其他Python函数一样,而是自动隐含地调用,没有留下任何调用的痕迹。这一点要牢记。
今天先介绍到这里,接下来我们还要继续丰富构造器的内容,创建堆栈。
精彩评论