【python学习】动手写第一个类

俗话说“好记性不如烂笔头”,真正开始写类的时候才发现那是相当累啊。

一、题目

编写一个类,实现简单的栈。数据的操作按照先进后出(FILO)的顺序。主要成员函式为put(item),实现数据item插入栈中;get(),实现从栈中取一个数据。

二、准备工作

开始之前要做些准备工作,主要是熟悉点规范吧,以后慢慢正规化!

头部加上编码(默认utf8)、头部的其他信息(如作者、修改时间等)、注释(普通注释和docstring)

具体规范见:http://blog.csdn.net/lanphaday/article/details/6601123

三、解决方案

这个大体思路还是很简单的,利用python的list数据类型,很方便使用。附上代码。

#-*- coding:utf-8 -*-
#FileName:stack.py
#Author:Xue Weiwei@USTC
#Last-Modify:2012-5-15

'''自定义栈
    @note:类和对象的使用'''

class MyStack:
    '''MyStack
        自定义栈,主要操作put(),get()
    '''
    def __init__(self,maxsize):
        '''
        初始化栈和一些参数
        @param max:指定栈的最大长度
        '''
        self.max=maxsize
        self.top=-1
        self.stack=list()
        for i in range(self.max):
            self.stack.append(0)        #初始化栈,开辟空间,否则数据溢出

    def put(self,str):
        '''
        将数据压入栈
        @param str:欲压入栈中的字符串
        '''
        if self.top>=self.max:          #防止溢出
            return "Error: the stack is overflow!"
        else:
            self.top+=1
            self.stack[self.top]=str
            print "put %s into the stack" % str
       

    def get(self):
        '''
        从栈中获取字符串
        @return:栈顶字符串
        '''
        if self.top<0:                  #防止空栈
            return "Error: the stack is empty!"
        else:
            self.top-=1
            return self.stack[self.top+1]


if __name__=='__main__':
    mystack=MyStack(10)
    mystack.put('a')
    mystack.put('b')
    mystack.get()
    mystack.get()

原文地址:https://www.cnblogs.com/xweiwei/p/2502237.html