面向对象的Python:堆栈的创建和应用

今天继续讲堆栈。

在之前过程化的方法创建堆栈中,我们定义了两个函数:push()和pop()。如何在面向对象的方法中,创建和使用它们呢?

在Python中,可以在类的内部创建这两个函数。创建的方法和前文中的构造器类似。当然,在创建它们之后,我们自己还有其他人需要调用这两个函数。(这一点和前文中介绍过隐藏在类中的列表不同。不是所有人都能访问隐藏在类中的列表。)

我们知道,类的私有(private)部分要用两个下划线开头。而对于公共(public)部分,则不使用两个下划线。事实上,Python对公共部分的规定是最多只能有一个下划线,没有下划线也可以。我们来看下面的程序。

class my_stack2: def __init__(self): self.__stack2_list = [] def push(self, val): self.__stack2_list.append(val) def pop(self): val = self.__stack2_list[-1] del self.__stack2_list[-1] return val stack2_object = my_stack2() stack2_object.push(3) stack2_object.push(2) stack2_object.push(1) print(stack2_object.pop()) print(stack2_object.pop()) print(stack2_object.pop())

在my_stack2类之中,首先是构造器。接下来就是push()和pop()这两函数,它们都增加了self这个参数,而且放在第一个的位置上。 

不知道这段程序大家看起来是不是似曾相识?为了说明问题并且方便对比,我们再看一次前文中过程化程序定义和使用堆栈的程序:

my_stack = [] def push(value): my_stack.append(value) def pop(): value = my_stack[-1] del my_stack[-1] return value push(3) push(2) push(1) print(pop()) print(pop()) print(pop())

在上面的程序中,push()有一个参数value,而pop()就根本没有参数。 

免责声明:上述内容仅代表发帖人个人观点,不构成本平台的任何投资建议。

举报

评论7

  • 推荐
  • 最新
  • 静静超甜
    ·2022-05-29
    666666
    回复
    举报
  • MaverickWoo
    ·2022-05-29
    快看看
    回复
    举报
  • Zang
    ·2022-05-29
    [得意]
    回复
    举报
  • RichJun
    ·2022-05-29
    666
    回复
    举报
  • ZhanYu
    ·2022-05-29
    回复
    举报
  • 任开怀
    ·2022-05-29
    巳经阅读
    回复
    举报
  • 塔希提岛
    ·2022-05-29
    ??。
    回复
    举报