this post was submitted on 22 Jul 2025
450 points (97.3% liked)

Programmer Humor

25448 readers
888 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] albbi@piefed.ca -1 points 1 week ago (1 children)

You're right in that OOP feels very shoehorned in with Python. But not every project has a Linus Torvalds to publicly humiliate horrible ideas and implementations.

[–] fruitcantfly@programming.dev 7 points 1 week ago (2 children)

In what way does OOP feel shoehorned in with Python? I ask since that is not my own impression of the language.

Would you also be willing to share what language(s) you feel do(es) OOP without it being shoehorned in?

[–] albbi@piefed.ca 1 points 6 days ago (1 children)

I was looking to see if there are equivalents to Java's private and protected members, and it looks like Python's answer to that is just throw one or two underscores in front of things to do that. And it doesn't really do anything, more of just a naming convention. To me that feels like a basic OO structure that is shoehorned into Python.

[–] fruitcantfly@programming.dev 2 points 4 days ago

A single underscore is just a naming convention, but double underscores triggers automatic name-mangling of the variable in question:

$ cat test.py
class foo:
        def __init__(self, x):
                self.__x = x

f = foo(1)
f.__x
$ python3 test.py
Traceback (most recent call last):
  File "/mnt/d/test.py", line 6, in <module>
    f.__x
AttributeError: 'foo' object has no attribute '__x'

However, much like private/protected variables in java, this is pretty trivial to circumvent if you want.

But I don't believe that you can argue that access modifiers are required for OO not to be shoehorned into a language, not when influential OO languages like Smalltalk didn't have this feature either. Java just happens to be closer to C++, where public/private/protected is much more rigidly enforced than either Java or Python

[–] amos@lemmy.zip 4 points 1 week ago

Yeah, some weird accusations. Python has had classes since its inception (1.0).

Also the image in the post makes no sense. It shows multiple (Spidey) instances all pointing to each other which is not how self works. self is just a parameter that may contain different instances depending how it was called. This is also true for any other parameters in any function, each time a function is called it may have a different instance.