error = 'stack4.error'                       # when imported: local exception

class Stack:
    def __init__(self, start=[]):            # self is the instance object
        self.stack = []                      # start is any sequence: stack..
        for x in start: self.push(x) 
    def push(self, obj):                     # methods: like module + self
        self.stack.append(obj)               # top is end of list
    def pop(self):	
        if not self.stack: raise error, 'underflow'
        return self.stack.pop()              # like fetch and delete stack[-1]
    def top(self):
        if not self.stack: raise error, 'underflow'
        return self.stack[-1]
    def empty(self):
        return not self.stack                # instance.empty()
    def __len__(self): 
        return len(self.stack)               # len(instance), not instance
    def __getitem__(self, offset):     
        return self.stack[offset]            # intance[offset], in, for
    def __repr__(self): return '[Stack:%s]' % self.stack          
