@PythonÜbernehmenSie: Dein Eindruck das Zugriffsteuerung im Alltag benötigt wird, kann nicht durch die Namenskonvention mit dem '_' bestätigt werden. Das bestätigt nur, dass im Alltag eine leichte Unterscheidung zwischen öffentlicher API und Interna benötigt wird. Daraus folgt nicht automatisch das es erzwungenen Zugriffschutz geben muss. Wenn das so wäre müsste es bei Python-Programmen ja ständig Probleme damit geben.
Wenn Du schreibst, das viele Sprachen so etwas haben, in zwei, drei oder mehreren Feinheitsgraden und es halbwegs funktioniert, halte ich dagegen, dass der Weg über Dokumentation und Namenskonventionen ebenfalls halbwegs funktioniert.
Also lautet die Antwort, nein man braucht keine Sichtbarkeitssteuerung, und nein das Fehlen einer solchen ist kein Nachteil.
Warum muss man Programmierer davor beschützen sich in den Fuss zu schiessen, wohlgemerkt in Fällen wo das nicht aus versehen passiert! Wer ein '_'-Attribut verwendet, tut das vorsätzlich. Wer das ständig, und ohne gute Gründe tut, wird auch sonst genug Blödsinn anstellen, vor dem ihn keine noch so restriktive Sprache schützen kann.
Übrigens wird die Konvention auch von der Sprache selbst unterstützt. Ein ``from some_module import *`` importiert alle Namen aus `some_module` ins importierende Modul, *ausser* die, die mit einem Unterstrich beginnen.
Was meinst Du damit wenn Du sagst man sollte die '_'-Konvention in die Sprache aufnehmen? Darauf zuzugreifen, auch von aussen, ist *kein Fehler*! '_' bedeutet nicht "privat, auf keinen Fall anfassen", sondern "Interna, nur anfassen, wenn Du weisst was Du tust". Die Sprachimplementierung kann da unmöglich eine "falsche" Verwendung erkennen und melden.
Und ich habe nicht den Eindruck, das Hyperion und str1442 Deiner Meinung sind, dass ein Sichtbarkeitsmodifikator nötig ist, sondern Du fälschlicherweise Kennzeichnung von Interna mit hartem Zugriffschutz gleichsetzt. Aus ersterem folgt nicht zwangsläufig letzteres.