Trotzdem liest sich einiges nach einer Nacht anders als in der Hitze des Arbeitstages. Auch wenn sich das Konzept in Python anders anhört, finde ich den Aufwand nur geringfügig geringer als z.B. in PHP auf private Eigenschaften zuzugreifen. Ich kann natürlich nur vergleichen, was ich kenne. Und das ist bisher an objektorientierten Sprachen PHP (jaja, ich weiss), Python und Javascript. Wenn ich denn in PHP dringend auf eine private Eigenschaft einer Klasse zugreifen müsste, muss man die Klasse ja auch nur um eine Getter-Funktion erweitern.
Letztendlich dient die Eigenschaft 'private' ja auch nur dem Programmierer, der die Klasse verwendet, zu sagen, dass er die Finger vom direkten Zugriff auf die Eigenschaft lassen soll, egal in welcher Sprache. Und mir reicht es da schon, wenn
Code: Alles auswählen
class MangleMe(object):
def __init__(self):
self.__mangle = 'Pfoten weg'
print mm.__mangle
print MangleMe.__mangle
print getattr(mm, '__mangle')
Wenn nun ein Anfänger wie Bastil (und ich) von private schreiben, verwirren die Einwände wie "es gibt kein private in Python" mehr als das sie helfen, auch wenn aus Sicht von erfahrenen Programmieren Welten zwischen private und private liegen können. Anfänger lesen nun mal Anfängerliteratur, und wird durchaus von privaten Eigenschaften geschrieben, evt. mit dem Zusatz "weniger strikt" als in anderen Programmiersprachen.Der direkte Zugriff darauf wirft auch einen Fehler, alles funktioniert also wie gewollt. Das macht also in den Augen des Anfängers die private Eigenschaft nicht weniger privat als in PHP oder Java oder welche andere Sprache auch immer.
Denn MeinObjekt.__privat ist ja geschützt, ich muss ja schon explizit MeinObjekt._MeinObjekt__privat aufrufen, um darauf zuzugreifen. Ich verstehe den Einwand des geringeren Schutzes und Aufwandes für den Zugriff, dennoch erscheint mir der Einwand "Python hat keine privaten Attribute" für zu harsch geschrieben, bloss weil man es einfach umgehen kann. Das macht aber die Intention für den Gebrauch des Attributs nicht weniger privat als bei anderen Sprachen.
Naja, just my 2 cents