Hier greift dann nur noch das "We are all consenting
adults: Man nimmt nicht automatisch properties, nur weil's geht (das gilt ja praktisch für alles in Python: (Meta-)Klassen, Mehrfachvererbung, Zugriff auf "_attribute", etc.).
Und 'monkey-patching' benutzt man auch nicht jeden Tag (eher nie) - kann aber extrem hilfreich gegen akute Bugs sein.
Pekh hat geschrieben: Schließlich sind die Teile doch genau dafür gedacht, einen faktischen Methodenzugriff wie einen direkten Attributzugriff darzustellen?
Ich sehe es eher umgekehrt: Die properties (in python) sind hauptsächlich 'syntactic sugar', um nachträglich z.B. Tests/Validierungen einzubringen, anstatt
immer[ (get-/set-)Methoden zu nehmen.
Die Methoden
aufrufe (und eben auch Propertys)sind in Python eben viel teuerer als 'bloße' Attributzugriffe, also wird versucht, sie möglichst zu vermeiden - durch 'public' Attribute eben.
Pekh hat geschrieben:Und ganz ehrlich: Wenn ich anfange, Methoden aus dem Namenraum einer Klasse zu entfernen und diese dann später wieder reinzufrickeln mache ich irgendwas falsch.
Ist natürlich grundsätzlich richtig, aber der "."-operator in Python holt ja (meistens) den Namen zur Laufzeit aus einem dict, das kostet (messbar) Zeit - die man bei
vielen Wiederholungen auch spürt.
hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!