Sure, but when I write code that's completely stateless,
Eh? Just because an object has state, doesn't mean it has to expose its internal state on an API.
My objects typically aren't stateless. Most of the time, the external world will not be able to peak at the internal implementation of state.
I rarely need polymorphism and probably don't need objects at all.
When I write code and I have the need to group a bunch of attributes in a container, I use a hash, and probably don't need objects at all.
But if I want to encapsulate something, I use objects, and actually encapsulate by not making most of the attributes visible.