I've tried many OOP languages and Ruby and Crystal felt that they had the friendliest approach. Why do I struggle? I think some of it is to do with the thick layers and unnatural wordiness of the way it is implemented in many languages: constructors, instantiating, getters, setters, public, private, unattractive syntax etc.
As I said earlier, I am not a great programmer (but try to improve :-) and my opinions on OOP reflect that.
As an aside, the stranglehold that OOP has had over the profession seems to have loosened. New languages like Julia, Go, Rust and Nim do not describe themselves as object-oriented although they have object-like features. Back in 2019 I asked Hacker News: "Why do new(ish) programming languages eschew OOP features?"
The main challenge is that you can't see which part of some huge pattern isn't matching, or insert a breakpoint / printf in the middle, it's just an opaque black box that either works or doesn't... and if it doesn't you need to break it all the way down to something that does, then work back up again from there.
I can write a factorial-computing program, but I'm slow at it.
I think my biggest problem is working out those instances when I should use a recursive function.
Functional programming.