I suspect that this will be a very remedial question but here goes:
Frequently when I'm making new classes and methods within the class, I tend to make a lot of the variables that I would regard as fundamentally "local" in their function accessible from the outside by making them self.x instead of just plain old x for example. I find this helpful for debugging (so that, for example if my end results are wonky I can go back to make sure that the contents of array x are what I think they are).
This allows me the diagnostics I need during writing, but then I later have to go back and change all the self.x, self.y, etc.... back to plain old x, y, etc... so that when I later type the object name the list of stuff I get to choose from is managable.
I suppose that this practice reflects my status as a beginner and I wonder what the mroe experienced guys are doing along this line. I figure there must be a better way. Appreciate any tims or advice.
Encapsulation is actually a form of abstraction.
What you want to achieve is to make it as easy as possible to work with the data and hide all the nitty-gritty details from the outside. You want loosely coupled components.
Here are some tips:
Despite all of that, just keep coding. You will get better at this over time. This just comes with experience. If you have some spare time to work on this, try Project Euler