title: Python basic data structure Implementation
body: <p>I am a C++ coder. Recently started with Python. I was having a look at a simple Linked List implementation in Python. I am bit confused here. Not only here but also in Tree implementation and so on with the same problem.</p>
  
  <p>class Element contains data and pointer to next node. Perfect no problem. However in class LinkedList I can see self.tail.next=e, now next is a variable of Element class even if it is public than also an object of Element class has to access it. Here how can we write something like self.tail.next = e as tail is just a variable of LinkedList class and is not an object of Element class. I am confused.</p>
  
  <pre><code>class Element:
          def __init__(self,x):
                  self.data=x
                  self.next=None
  
  
  class LinkedList:
          def __init__(self):
                  self.head=None
                  self.tail=None
  
          def append(self,x):
                  # create a new Element
                  e = Element(x)
                  # special case: list is empty
                  if self.head==None:
                          self.head=e
                          self.tail=e
                  else:
                          # keep head the same
                          self.tail.next=e
                          self.tail=e
  </code></pre>