_
toggle menu eXmatrikulationsamt.de
online: 80 gäste

> Objektorientiert arbeiten mit Python

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 02 Jan 2009, 17:11
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Hallo Mitnerds,

will mich schon seit ein paar Tagen in Python einarbeiten, kann jedoch noch nicht wirklich erkennen, was daran so überaus toll sein soll. (Sorry für evtl. Fehlschlüsse oder Halbwahrheiten, bin noch ziemlich neu und nubig, was Python angeht)
Klar, die Omnipräsenz von Objekten ist ganz cool, z.B. für Callbacks und so, aber bspw. geht mir dieses "es ist nicht wichtig, zu welcher Klasse ein Objekt gehört, sondern nur, ob es die entsprechenden Methoden enthält" Credo auf den Sack. Ohne Typüberprüfung und co. laufe ich doch immer Gefahr in einen Runtime Error zu geraten. Klar gibts Exceptions und so, aber so richtig wohl fühle ich mich nicht bei dem Gedanken, sowas ständig zur Laufzeit prüfen zu müssen.
Des weiteren scheint es keine Unterscheidung zwischen Privat und Public zu geben, darüber hinaus können Objekteigenschaften überall definiert werden zu können oder täusche ich mich da?
Gleiches gilt für so m. M n. wunderbare Sachen, wie Interfaces und abstrakte Klassen. Klar kann Python Mehrfachvererbung und man kann sich sowas dann quasi per Hand zusammenbasteln. Trotzdem, durch die nicht vorhandene Typprüfung wird das ganze doch etwas ad absurdum geführt, denn ich kann ja nicht überprüfen, ob ein bestimmtes Objekt jetzt ein bestimmtes Interface (bspw. Iterator) implementiert, sondern eben nur, ob die beschissene Methode da ist und das eben erst zur Laufzeit.

Hm also entweder funktioniert die OOP hier ganz anders und ich muss erstmal auf den Geschmack kommen, oder die ganze Sache ist etwas abgefuckt. Kann mich da mal jemand aufklären?


--------------------
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 02 Jan 2009, 18:15
avatar
alles anzweifeln!
****

Punkte: 472
seit: 01.10.2003

Vielleicht hilft Dir eine "test-driven" Mentalität: Ein erfolgreicher Compilerlauf ist auch nur das bestehen
eines test cases. Bei dynamischen Sprachen wie python muss (sollte) man diesen halt durch
entsprechende Tests ersetzen. Andersrum gesagt: ein statisches Typsystem garantiert Dir auch keine
Abwesenheit von runtime errors.

Exceptions werden in python traditionell sehr liberal verwendet, wenn Dir das nicht schmeckt, ist python
evtl nichts für Dich.

private: lass den Kram, den Du private halten willst, mit 2 underscores beginnen
(self.__so_zum_beispiel), dann kann man von außen nur mit Trix ran.

Interfaces: gibts library-ansätze zu, hab ich jetzt aber auch keine im Kopf.

Was OOP angeht: die Frage "what is an object?" ist gar keine so einfache biggrin.gif
Ich finde python genügend OO-ish, vor allem die Metaprogrammierung ist inzwischen recht flauschig.
(Wenn man allerdings abgefahrene Dinge mit dem import system in Kombination mit metaclasses
anstellen will, machts irgendwann dann doch keinen Spaß mehr. Aber das nur am Rande)

summa summarum scheint python Deinen Geschmack nicht so ganz zu treffen, evtl findest Du ja mehr
Freude an C# oder Scala...


--------------------
I am now surrounded by hypocrites, liars, drunks, clowns, fools, sycophants and the desparate.
ProfilPM
AntwortenZitierenTOP
Beiträge
Stormi   Objektorientiert arbeiten mit Python   02 Jan 2009, 17:11
anatoL   Vielleicht hilft Dir eine "test-driven" ...   02 Jan 2009, 18:15
stth   nein. Python wird dich versauen ;)   02 Jan 2009, 21:14
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: