title: Python argument passing in object oriented programming
body: <p>I apologize if this was asked somewhere else, but I do not know how else to formulate this question.</p>
  
  <p>I am a physicist and Python is my first object-oriented language. I love this language for its clean code, and somehow everything works as intended (by me ;).</p>
  
  <p>However I have one problem, maybe it is more of a design choice, but since my object oriented programming is self-taught and very basic I am not sure which way to go.</p>
  
  <p>So the question is: should I mainly pass arguments or manipulate the object data directly? Because, for instance:</p>
  
  <pre><code>class test(object):
  
      ...
  
      def dosomething(self, x, y):
          # do someting with x, y involving a lot of mathematic manipulations
  
      def calcit(self):
          k = self.dosomething(self.x[i], self.y[i])
          # do something else with k
  </code></pre>
  
  <p>produces much cleaner code than not passing <code>x, y</code> but passing <code>i</code> and writing the <code>self</code> explicitly every time. What do you prefer, or is this an object oriented paradigm that I am breaking?</p>
  
  <p>Performance-wise this shouldn't make a difference since the arguments are passed by reference, right?</p>