Anonymous hat geschrieben:Ich bin Anfänger mit Python, so wollte ich mit dem neuen Klassenstil probieren. Mit dem alten __setattr__ / __getattr__ funktioniert das Verhindern.
Ja probieren ist okay, aber ich muss sagen, dass ich das Verhindern noch nie benutzt habe. Nur Properties erscheinen mir sinnvoll, die sind ganz in Ordnung.
Anonymous hat geschrieben:BTW, ich habe so gedacht, dass alle Klassen von object abgeleitet wurde, wenn man nicht explizit angegeben hat. Aber du sagst, die Verbung von object ist ein Trick, bitte um genaue Erläuterung, wenn du irgendwann Zeit hast.
Es ist so: seit Python 2.2.1 (.1 war es, denke ich) gibt es eine Unterscheidung zwischen New-Style-Klassen und Old-Style Klassen. Um alten Code nicht zu brechen sind alle Klassen per default Old-Style Klassen und verhalten sich so wie z.B. in Python 2.1. Dann wurden New-Style-Klassen erstellt, über die man weitaus mehr Kontrolle hat. Alle Klassen die von New-Style Klassen erben werden automatisch zu New-Style Klassen, wie zum Beispiel wenn man von
list oder
file erben will. Nun hat noch eine 'leere' New-Style Klasse gefehlt von der man hätte erben können. Somit wurde object erstellt. Object macht nichts, es ist einfach ein e New-Style Klasse von der man erbt um eine leere New-Style Klasse zu bekommen. Die Bezeichnung "Trick" ist von mir etwas unglücklich gewählt, denn das macht man in Python halt so (und das ist meines Erachtens auch kein Probelm).