title: Python object initialize is not behaving logically(attributes act as static variables)
body: <p>We have three class BlockTag,RowTag and ColumnTag.RowTag and ColumnTag both extend from BlockTag.You can see them below:</p>
  
  <p><strong>BlockTag:</strong></p>
  
  <pre><code>class BlockTag(object):
  
      def __init__(self,font=None,content="",border=None,right_border=None,left_border=None,top_border=None,bottom_border=None,text_alignment=None,forecolor=None,backcolor=None):
          self.content=content
          self.border=border
          self.right_border=right_border
          self.left_border=left_border
          self.top_border=top_border
          self.bottom_border=bottom_border
          self.text_alignment=text_alignment
          self.forecolor=forecolor
          self.backcolor=backcolor
          self.font=font
  
      def __getitem__(self, item):
          try:
              return getattr(self,item)
          except AttributeError:
              return None;
  </code></pre>
  
  <p><strong>RowTag:</strong></p>
  
  <pre><code>class RowTag(BlockTag):
  
          def __init__(self,font=None,content="",border=None,right_border=None,left_border=None,top_border=None,bottom_border=None,text_alignment=None,forecolor=None,backcolor=None,skipInHTML=None,skipInPDF=None,skipInExcel=None,inner_td_tags=None):
              super(RowTag,self).__init__(font=font,content=content,border=border,right_border=right_border,left_border=left_border,top_border=top_border,bottom_border=bottom_border,text_alignment=text_alignment,forecolor=forecolor,backcolor=backcolor,)
              self.inner_td_tags=inner_td_tags #if inner_td_tags else []
              self.skipInExcel=skipInExcel
              self.skipInHTML=skipInHTML
              self.skipInPDF=skipInPDF
  
          def __iter__(self):
              return  iter(self.inner_td_tags);
  
          def add_td_tags(self,*input_td_tags):
  
              for i in input_td_tags:
                  self.inner_td_tags.append(i)
              return self;
  
          def __getitem__(self, item):
              try:
                  return getattr(self,item)
              except AttributeError:
                   return None;
  </code></pre>
  
  <p><strong>ColumnTag:</strong></p>
  
  <pre><code>class ColumnTag(BlockTag):
  
      def __init__(self,font=None,content="",border=None,right_border=None,left_border=None,top_border=None,bottom_border=None,text_alignment=None,forecolor=None,backcolor=None,image=None,row_span=None,col_span=None,width=None,verticalText=None,verticalAlign=None):
  
          super(ColumnTag,self).__init__(font=font,content=content,border=border,right_border=right_border,left_border=left_border,top_border=top_border,bottom_border=bottom_border,text_alignment=text_alignment,forecolor=forecolor,backcolor=backcolor)
  
          self.image=image
          self.row_span=row_span
          self.col_span=col_span
          self.width=width
          self.verticalText=verticalText;
          self.verticalAlign=verticalAlign;
  
      def __getitem__(self, item):
          try:
              return getattr(self,item)
          except AttributeError:
              return None;
  </code></pre>
  
  <p>The problem is that when I create two object of type RowTag the second object has the Columns of first Object!(as we know objects should be independent)</p>
  
  <pre><code>r1=RowTag().add_td_tags(
      ColumnTag(),
      ColumnTag(),
      ColumnTag(),
  )
  
  r2=RowTag()
  
  print("size=&gt;")
  print(len(r2.inner_td_tags))#prints 3!!!!
  </code></pre>
  
  <p>I would be apperciate if You can help me even a bit.</p>