|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Stack:
- def __init__(self,start=[]):
- self.stack = []
- for x in start:
- self.push(x)
- def isempty(self):
- return not self.stack
- def push(self,obj):
- self.stack.append(obj)
- def pop(self):
- if not self.stack:
- print('警告,栈为空!')
- else:
- return self.stack.pop()
- def top(self):
- if not self.stack:
- print('警告,栈为空!')
- else:
- return self.stack[0]
- def bottom(self):
- if not self.stack:
- print('警告,栈为空!')
- else:
- return self.stack[-1]
- st = Stack()
- st.push('C')
- st.push('h')
- st.push('s')
- st.push('i')
- st.push('f')
- print(st.bottom())
- print(st.stack[::-1])
复制代码
两处 第一处为什么用start 而不用self.stack呢?
第二处 为什么用obj 而不用 self.obj呢
谢谢
不知道你是不是还没完全理解self参数的含义,self参数就是实例化对象,而你要往栈里面传东西,实例对象的栈里的stack原本就是空的了,怎么可能用self.stack呢?比如说
- a = Stack([2,3,5]) #start = [2,3,5],但a.stack(即self.stack)在初始化前为空
复制代码
而用push的方法,则可将start中元素推入a.stack
同理,你的 ,这个obj也是你自己输进去或者start传进去的,在a.stack中还不存在这个obj,不能用self.obj
|
|