was heisst denn das schon wieder???
also manchmal denke ich lerne chinesisch oder sonst was
es geht um oop
1. polymorphismus
2. in python werden attribute immer an ort und stelle aufgelöst.
3. was sind die schnittstellen, von denen im zusammenhang mit oop immer wieder gerdet wird? die methoden und attribute, die durch die vererbung weitergegeben werden vielleicht???
ich glaub das reicht mal
ich bedanke mich im voraus und freue mich über hilfreiche antworten.
mfg
roland
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Roland,
Du kannst z.B. eine abstrakte Klasse BaseContainer erstellen, welche die Methoden print, load und store enthält.
Jetzt kannst Du Funktionen oder andere Classen schreiben, die ein Objekt vom Type BaseContainer verwenden und da die Methoden (Schnittstellen) schon bekannt sind,eben print, load und store, mit diesen arbeiten, ohne zu wissen, welche Klassen, die dann von BaseContainer abgeleitet sind vewendet werden. So lassen sich OOP-Programme auch später leicht erweitern, ohne am Basiscode Änderungen vornehmen zu müssen. In dem Beispiel kommen alle von Dir aufgeführten Punkte zum Tragen.
Gruß
Dookie
ach nerolgal hat geschrieben:
also manchmal denke ich lerne chinesisch oder sonst was
es geht um oop
Direkt übersetzt Vielgestaltigkeit. Das bezieht sich darauf, daß eine Instanz einer, von einer Klasse abgeleiteten, Kindklasse an den selben Stellen verwendet werden kann wie die Elternklasse.1. polymorphismus
Das bezieht sich darauf, daß sich Attribute einer Instanz sich zur Laufzeit änder, ja soger neue Attribute hinzugefügt oder gelöscht werden können.2. in python werden attribute immer an ort und stelle aufgelöst.
genau, besonders bei sogenannten abstrakten Klassen, die nur als Basisklassen dienen und dort eben die "Schnittstellen" definieren3. was sind die schnittstellen, von denen im zusammenhang mit oop immer wieder gerdet wird? die methoden und attribute, die durch die vererbung weitergegeben werden vielleicht???
Du kannst z.B. eine abstrakte Klasse BaseContainer erstellen, welche die Methoden print, load und store enthält.
Code: Alles auswählen
class BaseContainer:
def print(self):
pass
def load(self, file):
return 1 # alles ok zurückgeben
def store(self, file):
return 1 # alles ok
ich glaub das reicht mal
ich bedanke mich im voraus und freue mich über hilfreiche antworten.
mfg
roland
Gruß
Dookie
Hi!
Freut mich wirklich, dass es scheinbar auch genug Leute gibt, die die selben Probleme haben wie ich .
Also ehrlich, ich komme mir oft genug schon wie der letzte Idiot vor, wenn ich in einem Satz nicht einmal mehr die Zusammenhänge schlussfolgern kann wegen den vielen Fachausdrücken etc... und wenn solch ein Satz dann als Erklärung für einen anderen unbekannten Ausdruck benutzt wird... naja - eh scho wissen -> Leidensgeschichte usw
Grüße
Simon
Freut mich wirklich, dass es scheinbar auch genug Leute gibt, die die selben Probleme haben wie ich .
Also ehrlich, ich komme mir oft genug schon wie der letzte Idiot vor, wenn ich in einem Satz nicht einmal mehr die Zusammenhänge schlussfolgern kann wegen den vielen Fachausdrücken etc... und wenn solch ein Satz dann als Erklärung für einen anderen unbekannten Ausdruck benutzt wird... naja - eh scho wissen -> Leidensgeschichte usw
Grüße
Simon
oder, was hältst du davon:-))))))))))))))))))))))))))
im ernst, als ich mit pyhton angefangen habe, hiess es, dass sooooo leicht zu lernen sei. naja, ich würde diese aussage heute nicht unterschreiben. ein freund von mir der auch mit c++ programmiert, erklärte, dass die sogenannten erleichterungen nur dann eine sind, wenn man mit sprachen wie c++ gearbeitet hat. d.h. python macht ja nicht weniger, wie c oder c++ sondern macht einiges automatisch, wie z.b die typendeklaration. für das wirkliche verständnis was eigentlich alles passiert, ist es seiner meinung nach unerlässlich c++ zu lernen.
klar, wie ich das meine?
aber hoffentlich ist es nicht wirklich so dramatisch.
cu
roland
Ist schon klar, wenn man vorher noch nie mit OOP gearbeitet hat . Aber das Python sehr leicht ist, wenn man C++ schon hatte ist auch klar, Python wurde ja darin geschrieben, deswegen lehnt die Syntax teilweise daran an. Schwierges bleibt deswegen aber natürlich trotzdem schwierig .
Trotzdem galube ich ist Python eine leichte Sprache. Ich habe mal versucht Perl zu lernen, habs aber gleich wieder aufgegeben, weil ich mit den vielen Sonderzeichen nicht zurecht gekommen bin... Die wesentlichen Vorteile von Python sind halt die leicht(er!) überschaubare Syntax und damit verbunden die in meiner Meinung schnellere Programmentwicklung.
Trotzdem galube ich ist Python eine leichte Sprache. Ich habe mal versucht Perl zu lernen, habs aber gleich wieder aufgegeben, weil ich mit den vielen Sonderzeichen nicht zurecht gekommen bin... Die wesentlichen Vorteile von Python sind halt die leicht(er!) überschaubare Syntax und damit verbunden die in meiner Meinung schnellere Programmentwicklung.
Fast richtig. Python ist in reinen ANSI-C geschrieben, ohne ++. Nur wenn man berücksichtigt, daß C++ eine Obermenge von C ist, ist es damit automatisch auch in C++ geschrieben.Milan hat geschrieben: ... Aber das Python sehr leicht ist, wenn man C++ schon hatte ist auch klar, Python wurde ja darin geschrieben, deswegen lehnt die Syntax teilweise daran an...
Der Python-Quellcode beinhaltet keine Klassen, alles reine 'struct's. Und Methoden gibt es auch nicht. Trotzdem beinhaltet das Konzept eine Art von OO, auch wenn es viele der OO-Mechanismen damit nicht unterstützt.
Ich habe OOP übrigens hauptsächlich mit Python gelernt, C++ konnte ich vorher nur stümperhaft.
Jörg
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hallo nochmal,
also IMHO ist es soger ein Fehler vorher c++ zu lernen. Dadurch gewöhnt man sich gewisse sachen an, die dann zu "komischen Verrenkungen" in Python führen. Wenn man sich manche Sourcen von Pythonmodulen anschaut, weiss man was ich meine
Ich habe schon OOP-Sachen angewandt, zu C64 und Amigazeiten, wo ich noch gar nicht wusste, daß das OOP ist. Mit Modula2 und Oberon2 bin ich dann tiefer in die OOP-Materie eingestiegen, was mir natürlich beim Erlernen von Python sehr geholfen hat.
Ich finde Python zum erlernen wirklich einfach, auch da mann ganz herkömmich prozedural programmieren kann. Und dann, quasi schleichend, zu OOP findet.
Gruß
Dookie
also IMHO ist es soger ein Fehler vorher c++ zu lernen. Dadurch gewöhnt man sich gewisse sachen an, die dann zu "komischen Verrenkungen" in Python führen. Wenn man sich manche Sourcen von Pythonmodulen anschaut, weiss man was ich meine
Ich habe schon OOP-Sachen angewandt, zu C64 und Amigazeiten, wo ich noch gar nicht wusste, daß das OOP ist. Mit Modula2 und Oberon2 bin ich dann tiefer in die OOP-Materie eingestiegen, was mir natürlich beim Erlernen von Python sehr geholfen hat.
Ich finde Python zum erlernen wirklich einfach, auch da mann ganz herkömmich prozedural programmieren kann. Und dann, quasi schleichend, zu OOP findet.
Gruß
Dookie
naja, ich meine ja nicht dass man c++ total lernen muss. aber gerade heute beim bummeln, gucke ich in ein c++ buch und lese mich ein bisschen ein. und siehe da, da stand etwas, was doch auf die ganze sache oop ein interessantes licht wirft, eigentlich auf das programmieren allgemein:
ein konstruktor wird z.b. auch aufgerufen wenn man eine variable setzt. (frei wiedergegeben)
also es hat in meinem kopf so laut geklingelt, dass der ganze laden geguckt hat.
in pythonbüchern, die ich halt kenne, liest man nur, bei python wird das und das und das alles automatisch gemacht. was wirklich im hintergrund passiert wird verschwiegen oder es wird so ,wie in "einführung in python" auf einem niveau geschrieben, das ein wissen voraussetzt.
...dass nämlich beim bilden einer variablen, eigentlich auch nur ein objekt einer klasse gebildet wird, ist schon für den gesamten zusammenhang eine wichtig info.
oder wie sehen andere das???
mfg
roland
ein konstruktor wird z.b. auch aufgerufen wenn man eine variable setzt. (frei wiedergegeben)
also es hat in meinem kopf so laut geklingelt, dass der ganze laden geguckt hat.
in pythonbüchern, die ich halt kenne, liest man nur, bei python wird das und das und das alles automatisch gemacht. was wirklich im hintergrund passiert wird verschwiegen oder es wird so ,wie in "einführung in python" auf einem niveau geschrieben, das ein wissen voraussetzt.
...dass nämlich beim bilden einer variablen, eigentlich auch nur ein objekt einer klasse gebildet wird, ist schon für den gesamten zusammenhang eine wichtig info.
oder wie sehen andere das???
mfg
roland
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Es gibt auch allgemeine Bücher zu OOP, in denen Der Sachverhalt ebenfalls sehr gut gezeigt wird. Ausserdem gibt es da auch noch zwei Philosopien, die eine möchte, das alles, auch die elementaren Datentypen (int, float, char, bool) als einfache Datentypen bestehen bleiben (C++) und bei der anderen soll alles als Objekt betrachtet werden (Java)
Im übrigen braucht man am Anfang auch gar nicht wissen, was z.B. bei Instanziieren einer Klasse so abläuft. Gute Klassen arbeiten sowieso als "Blackbox" und stellen nur ihre Schnittstellen (Attribute und Methoden) zur Verfügung. Das ist eben auch ein Vorteil von OOP, daß man Klassen schreiben kann, die später intern vielleicht ganz anders arbeiten. Z.B. eine Grafikklasse, die ursprünglich in ein einfaches Canvas-Widget zeichnet, und in einer späteren Version in ein OpenGL-Widget.
Gruß
Dookie
Im übrigen braucht man am Anfang auch gar nicht wissen, was z.B. bei Instanziieren einer Klasse so abläuft. Gute Klassen arbeiten sowieso als "Blackbox" und stellen nur ihre Schnittstellen (Attribute und Methoden) zur Verfügung. Das ist eben auch ein Vorteil von OOP, daß man Klassen schreiben kann, die später intern vielleicht ganz anders arbeiten. Z.B. eine Grafikklasse, die ursprünglich in ein einfaches Canvas-Widget zeichnet, und in einer späteren Version in ein OpenGL-Widget.
Gruß
Dookie
Hallo!
Trotz 'Kleinschreiber' ausnahmsweise was von mir dazu, damit hier nicht Behauptungen unwidersprochen stehen bleiben und als richtig hingenommen werden.
Jan
Trotz 'Kleinschreiber' ausnahmsweise was von mir dazu, damit hier nicht Behauptungen unwidersprochen stehen bleiben und als richtig hingenommen werden.
Es wird deshalb "verschiegen", weil es für Python schlicht falsch ist. Weder wird beim 'Bilden' von Variablen zwingend und ursächlich eine neue Instanz (neues Objekt) einer Klasse erzeugt, noch wird beim Erzeugen einer neuen Instanz zwingend eine neue Variable 'gebildet'. Es besteht schlicht kein Zusammenhang zw. den Variablen (die ja nur Referenzen auf Objekte vorhalten) und der Erzeugung von Instanzen/Objekten.rolgal hat geschrieben:ein konstruktor wird z.b. auch aufgerufen wenn man eine variable setzt. (frei wiedergegeben)
...
in pythonbüchern, die ich halt kenne, liest man nur, bei python wird das und das und das alles automatisch gemacht. was wirklich im hintergrund passiert wird verschwiegen oder es wird so ,wie in "einführung in python" auf einem niveau geschrieben, das ein wissen voraussetzt.
...dass nämlich beim bilden einer variablen, eigentlich auch nur ein objekt einer klasse gebildet wird, ist schon für den gesamten zusammenhang eine wichtig info.
Du hälst c++ offensichtlich für die Mutter aller OOP-Sprachen, dabei ist es eher nur ein missratenes Kind.rolgal hat geschrieben:oder wie sehen andere das???
Jan
also 1. danke für die gnade zu antworten, obwohl ich nur klein schreibe
rolgal verbeugt sich ehrfürchtig.
und dann noch zu c++: es geht nicht darum, was ich von c++ halte, sondern um das was mir auch andere entwickler gesagt haben. nämlich, dass vieles was in c++ manuell gemacht werden muss, und in diesem zusammenhang offensichtlich ist was passiert, python automatisch macht.
das mit der variablen, kann ich jetzt als newbie schwer beurteilen wer recht hat.
grundsätzlich wäre schon logisch, da ja alles in python ein objekt ist (oder fast alles)
und daher ist die annahme naheliegend, dass bei der bildung einer variablen auch ein konstruktor aufgerufen wird. im untergrund von python passiert ganz sicher was.
wie auch immer, ich erwarte mir nicht nochmal eine gnadentat von dir
mwfg
roland
rolgal verbeugt sich ehrfürchtig.
und dann noch zu c++: es geht nicht darum, was ich von c++ halte, sondern um das was mir auch andere entwickler gesagt haben. nämlich, dass vieles was in c++ manuell gemacht werden muss, und in diesem zusammenhang offensichtlich ist was passiert, python automatisch macht.
das mit der variablen, kann ich jetzt als newbie schwer beurteilen wer recht hat.
grundsätzlich wäre schon logisch, da ja alles in python ein objekt ist (oder fast alles)
und daher ist die annahme naheliegend, dass bei der bildung einer variablen auch ein konstruktor aufgerufen wird. im untergrund von python passiert ganz sicher was.
wie auch immer, ich erwarte mir nicht nochmal eine gnadentat von dir
mwfg
roland
Typen sind auch Objekte, das dürfte eigentlich auch woanders so sein... z.B. kann man ja in Delphi auch eigene Typen mit Methoden und anderem Krams definieren. Ich habe keine Ahnung von C++, weil ich nur ein paar Anfänge in C hatte, aber eigentlich ist es doch egal, wie Python das intern regel, solange man damit umgehen kann.
Ich weiß jetzt nicht mehr worum es hier im Thema noch genau geht, aber ich möchte keine Diskussion über "Python ist schlecht!" <--> "Python ist gut" !
Ich weiß jetzt nicht mehr worum es hier im Thema noch genau geht, aber ich möchte keine Diskussion über "Python ist schlecht!" <--> "Python ist gut" !
Ja, man muss nur ganz feste dran glauben, egal, was in der Doku steht oder was andere sagen. Dann erhört einen der Pythoninterpreter vielleicht auch eines Tagesgast,alias rolgal hat geschrieben:und daher ist die annahme naheliegend, dass bei der bildung einer variablen auch ein konstruktor aufgerufen wird. im untergrund von python passiert ganz sicher was.
You made my day!
Jan
Wie wäre es mit einem Flame-Forum?Milan hat geschrieben: aber ich möchte keine Diskussion über "Python ist schlecht!" <--> "Python ist gut" !
Ich wollte auch C++ nicht schlecht machen (scließlich verdiene ich meine Brötchen mit C++-Programmierung ), sondern nur zum Ausdruck bringen, dass C++ nicht das Maß in Sachen OOP ist. Dass durch das 'Bilden' (aka Deklarieren) einer Variablen bereits ein Objekt (inkl. Konstruktoraufruf) entsteht, gilt eben nur für C++ (naja, und sicherlich für eine oder andere Sprache, die ich nicht kenne). Das ist das, was rolgal irgendwo gelesen hat. Beispiel:
Code: Alles auswählen
// C++
class MyClass
{
...
};
MyClass myObject;
// myObject ist jetzt bereits ein komplettes Objekt (eine Instanz der Klasse MyClass)
// inkl. erfolgtem Kontruktoraufruf
Jan
Oops, Ich sollte auch lesen, was ich zitiere. Tief im Inneren halte ich C++ wohl doch für schlecht
jaja Einführung in Python
@rogal
Echt. Schon allein bei der Einleitung für dieses Buch- also "Warum Python" habe ich eigentlich die ersten 20 Seiten nur Bahnhof verstanden. Was mir dieses Buch wahrscheinlich mindestens so viel gelernt hat wie die Sprache Python ist, dass das einzige Hindernis am Programmieren Lernen auf keinen Fall die Intelligenz, sondern der bei manchen Leuten der eben unzureichende Biss ist.
Mittlerweile gehts bei mir so ziemlich, also ich finde mich in Pytohn immer besser zurecht, wobei ich eh noch immer nicht fertig bin mit der Lektüre dieses Buches. Aber ich weiß nicht, wie oft ich dieses verdammte Buch frustriert zugeschlagen habe.
Bis bald
Simon
@rogal
Echt. Schon allein bei der Einleitung für dieses Buch- also "Warum Python" habe ich eigentlich die ersten 20 Seiten nur Bahnhof verstanden. Was mir dieses Buch wahrscheinlich mindestens so viel gelernt hat wie die Sprache Python ist, dass das einzige Hindernis am Programmieren Lernen auf keinen Fall die Intelligenz, sondern der bei manchen Leuten der eben unzureichende Biss ist.
Mittlerweile gehts bei mir so ziemlich, also ich finde mich in Pytohn immer besser zurecht, wobei ich eh noch immer nicht fertig bin mit der Lektüre dieses Buches. Aber ich weiß nicht, wie oft ich dieses verdammte Buch frustriert zugeschlagen habe.
Bis bald
Simon