• 【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()

  • 相关阅读:
    去掉mysql数据库字段中的个别字符
    配置tomcat的虚拟路径
    log4j配置文件详解
    Eclipse Java注释模板设置详解
    OGNL表达式
    Struts2常用标签
    springMVC中ajax的使用
    springMVC配置文件位置及名称
    (转)Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并
    采用U盘安装操作系统
  • 原文地址:https://www.cnblogs.com/xweiwei/p/2502237.html
Copyright © 2020-2023  润新知