In [45]:
class Stack:
    'Simple Stack implementation'
    
    def __init__(self):
        self.elements = []
        self.size = 0
    
    def push(self, elem):
        self.elements.append(elem)
        self.size += 1
    
    def pop(self):
        if self.size > 0:
            self.size -= 1
            return self.elements.pop()
        else:
            return None
    
    def size(self):
        return self.size
    
    def is_empty(self):
        return self.size == 0
    
    def delete(self):
        del self.elements
        self.__init__()

In [46]:
s = Stack()

In [47]:
help(s)


Help on Stack in module __main__ object:

class Stack(builtins.object)
 |  Simple Stack implementation
 |  
 |  Methods defined here:
 |  
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  delete(self)
 |  
 |  is_empty(self)
 |  
 |  pop(self)
 |  
 |  push(self, elem)
 |  
 |  size(self)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)


In [48]:
s.size


Out[48]:
0

In [49]:
for i in range(10):
    s.push(i)

print(s.size)

while (not s.is_empty()):
    print(s.pop())


10
9
8
7
6
5
4
3
2
1
0

In [50]:
s.size


Out[50]:
0

In [51]:
print(s.pop())


None

In [52]:
for i in range(10):
    s.push(i)
    
print(s.size)
s.delete()
print(s.size)


10
0