I had exactly the same problem 'getting' OOP. I did my CS degree back in the 80s and never learned OOP academically, and mostly wrote shell scripts and Perl through the 90s as a sysadmin.
Then I decided to buckle down and learn OOP. I started with C# - way too heavy duty for me. Then I discovered Python. I took to it fast but still didn't understand how OOP apps are structured. Where do you put the data? How does an app pass data between objects?
It literally took me years of playing about to get my head around it. I think what helped me get it was just looking at some very basic OOP structured examples. Tutorials are fine, but there's no substitute for looking at and playing with actual well-written code.
The thing is, for many apps, in fact for the majority of my scripts at work, I rarely create new classes at all. They're mostly just collections of module level functions. When faced with nut, use hammer; self-assembly kit for electrically powered OmniNut Crackotron Pro not required.
Then there's StarBase, which is an OOP-to-the-max 10,000 line monster. But then it has to be. It's a big solution to a big problem. That's why I tried to make sure the world generation plugin scripts are as simple and have as elementary an interface to the main app as possible. I want anyone with even the most rudimentary coding skills to be able to do useful things with StarBase and take advantage of all the work that's gone into it's internals.
I second that shout out to Py2exe as well. It's a fantastic project. It's what makes it possible for me to distribute SB as an executable, but still load the Python plugin scripts at runtime. You can program StarBase using python, without installing Python. It's like magic!
Simon Hibbs