Python looking at private var = ...; like "nah, rejected" but then seeing _var = ...; and suddenly it's all love and acceptance. Because nothing says "private" like a single underscore that literally does nothing to prevent access. Python's philosophy on encapsulation is basically "we're all consenting adults here" – which is code for "there's no such thing as truly private variables, just polite suggestions." That underscore prefix is just a gentleman's agreement that you shouldn't touch it, not that you can't . It's the programming equivalent of a "Please Keep Off The Grass" sign with no fence. Meanwhile, languages like Java are over there with their private keyword actually enforcing boundaries like a proper bouncer, while Python just trusts you won't be a jerk. Spoiler: developers are absolutely jerks when they need to be.