title: Why do two instances of same class get same instance variable change?
body: <p>I want to make a GUI that asks the user which two files he wants to open. It presents as an Entry and a Button (two times : one per file), both in the same frame, itself in the root. </p>
  
  <p>Since I want the same thing twice, I defined a class and then instanciated it two times, just with different grid positions. 
  It contains a method called by the button that updates the value of the Entry.</p>
  
  <p>It works but when I select a file with whichever button, it writes the file path in <strong>BOTH</strong> Entries. I expect it to write <strong>only in the Entry corresponding to the instance</strong>.</p>
  
  <p>It looks like a class variable issue, but my <em>attributes are at instance level</em>, so it should get differentiated with the instances.</p>
  
  <p>Here's my code : </p>
  
  <pre class="lang-py prettyprint-override"><code>from tkinter import Tk, Frame, Label, Button, Entry, filedialog as fd
  
  class Selection:
      def __init__(self, master):
          self.load_button = Button(master, text="...", command=self.loadFile)     
          self.filedir = Entry(master, text = " ")    
  
      def loadFile(self):
          self.filename = fd.askopenfilename() 
          self.filedir.delete(0,"end")
          self.filedir.insert(0, self.filename)            
  
  if __name__=='__main__': 
  
      #-------Defining the Root window
      root = Tk()
      root.geometry("1000x600+455+210")
  
      root.grid_columnconfigure(0, weight=1) 
      root.grid_columnconfigure(1, weight=2)
      root.grid_columnconfigure(2, weight=1)
      root.grid_rowconfigure(0, weight=1) 
      root.grid_rowconfigure(1, weight=1)
      root.grid_rowconfigure(2, weight=1)
      root.grid_rowconfigure(3, weight=1)
  
      #-------Defining the Frame  
  
      f2 = Frame(root, bg='#D5F4E4')
  
      f2.grid_columnconfigure(0, weight=1) 
      f2.grid_columnconfigure(1, weight=2)
      f2.grid_columnconfigure(2, weight=1)             
      f2.grid_rowconfigure(0, weight=1) 
      f2.grid_rowconfigure(1, weight=1)
      f2.grid_rowconfigure(2, weight=1)              
      f2.grid_rowconfigure(3, weight=1) 
  
      #-------Instantiation here (Defining the Widgets) 
      TexteL = Label(f2, text="Please select file L :")          
      TexteT = Label(f2, text="Please select file T :")
  
      k = Selection(f2)  
      j = Selection(f2) 
  
      #-------Grid everything
      f2.grid(row=1,column=1, sticky="nsew")
  
      TexteL.grid(row=0,column=1)
      TexteT.grid(row=2,column=1)
  
      k.load_button.grid(row=1, column=2) 
      k.filedir.grid(row=1, column=1, sticky='ew')
  
      j.load_button.grid(row=3, column=2) 
      j.filedir.grid(row=3, column=1, sticky='ew')
  
      root.mainloop()
  </code></pre>