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