upvote
If that's enough to make a language pure OOP, then Common Lisp is also a pure OOP languge:

  CL-USER> (class-of 42)
  #<BUILT-IN-CLASS COMMON-LISP:FIXNUM>
reply
I have found the definition of OOP to be fuzzy. For example, I don't see why having methods would make a data type object oriented. I associate OOP with factories, inheritance, using classes in places that might be functions otherwise, and similar abstractions.

Perhaps this is the counterfactual: I program in Python regularly, but don't program in an OOP style; I use dataclasses and enums as the basis, in a way similar to Rust, which by some definitions can't do OOP. So, if Rust can't do OOP (assumption) and I can write Python and Rust with equivalent structure (Assumption), does that mean Python isn't strictly OOP?

reply
> if Rust can't do OOP (assumption)

Rust handles basic OOP, but not all of the characteristics seen in C++ or Java:

https://doc.rust-lang.org/book/ch18-01-what-is-oo.html

reply
This is very cool, and I did not know this. Thank you!

I wonder if my formal university python training predated this change (~2010), or if the professors were themselves unaware of this.

reply
They were unaware of it, or unwilling to talk about it, article from 2002, about changes introduced in 2001

https://gnosis.cx/publish/programming/metaclass_1.html

https://www.python.org/download/releases/2.2/descrintro/

reply
> I love to point this out to OOP haters

That seems like a pretty lame gotcha--saying "Aha! The language you write in uses your hated paradigm under the hood" seems to invite the immediate response of "So? I don't use it."

reply
It is more about those that proudly use Python because it isn't an OOP language, yep those do exist.
reply