Ergebnis 1 bis 14 von 14

Thema: Python lernen - wie wichtig ist oop?

  1. #1
    Mitglied
    Registriert seit
    Dec 2017
    Beiträge
    11

    Python lernen - wie wichtig ist oop?

    Aus Spass habe ich mit Python angefangen. Datentypen, Schleifen, Verzweigungen, Funktionen ...habe ich gelernt. Kein Hexenwerk. Im naechsten Kapitel geht es dann um oop. Mach(lern)bar - bei deutlich zu steigerndem Aufwand.
    Gestolpert bin ich dann aber ueber einen Satz: "OOP macht vor allem bei sehr grossen Projekten Sinn".
    Meine Ziele mit Python sind jedoch niedriger - wenig "smart home", etwas "raspberry", vlt. mal ein kleines script fuer Foto/bearbeitung/verwaltung, ansonsten - wie gesagt - Spass haben.
    Sollte ich mich also durch oop "quaelen"?
    Wird das Thema Python und Datenbanken fuer mich wichtig? (oder kann ich diese Frage nur selbst beantworten?)
    Danke fuer Anregeungen und Kommentare.

  2. #2

    Re: Python lernen - wie wichtig ist oop?

    Zitat Zitat von hol Beitrag anzeigen
    Gestolpert bin ich dann aber ueber einen Satz: "OOP macht vor allem bei sehr grossen Projekten Sinn".
    Kein Wunder. Das ist ein seltsamer Satz. OOP Ist ein Design-Tool und Programmier-Paradigma. Ob das Sinn macht, hängt von deinem Problem ab, nicht der Projektgröße. Es würde ja auch keiner sagen: »Ein Hammer macht vor allem bei sehr großen Nägeln Sinn.«

    wenig "smart home", etwas "raspberry", vlt. mal ein kleines script fuer Foto/bearbeitung/verwaltung
    Das klingt recht stark nach »shell scripting on steroids«. Das geht scriptig (prozedural) recht gut. Ich hab mal eine komplette Skriptesammlung rund um Mercurial auf die Art geschrieben, iirc ohne dabei eine einzige Klasse zu verwenden. War erstaunlich schmerzfrei, obwohl ich’s heute sicher anders machen würde.

    Quälen macht jedenfalls keinen Sinn. Fang an zu basteln und behalte im Hinterkopf, dass Klassen äußerst praktisch sind, um Daten (Attribute) und zugehörige Funktionalität (Methoden) zusammenzuschnüren. Wenn du nur soweit in die OOP-Welt reinschnupperst, ist das schon ein großer Schritt.

    Wird das Thema Python und Datenbanken fuer mich wichtig? (oder kann ich diese Frage nur selbst beantworten?)
    Das musst du tatsächlich selbst beantworten. Hängt komplett von deinen Projekten ab. Wenn du zu dem Punkt kommst und eine relationale DB haben willst, schau dir auf jeden Fall SQLAlchemy an.
    Für diesen Beitrag bedanken sich pspzockerscene, BurnerR, MingsPing

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Dec 2017
    Beiträge
    11

    Re: Python lernen - wie wichtig ist oop?

    Danke Brother John,
    ich interpretiere mal fuer mich:
    oop ist ein "nice to have" - deutsch = "gut, wenn man es kann". Ordnung/Uebersichtlichkeit wird durch Klassen unterstuetzt. Ich gehe das Thema oop also an (soweit wie ich komme). Da Python meine erste Programiersprache ist und ich die 60 schon deutlich ueberschritten habe...kann ich zumindest den Faktor "Zeit" einbringen...

  4. #4
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    127

    Re: Python lernen - wie wichtig ist oop?

    OOP macht vor allem dann Sinn wenn man richtige Softwareentwicklung lernen will. Sich nur die entsprechenden Sprachkonstrukte anzuschauen, ohne die Hintergründe zu kennen bringt nicht viel. Ich weiß natürlich nicht wie gut dein tutorial/Buch die Konzepte erklärt, aber zumindest die Artikel die ich so gelesen habe gehen oft davon aus dass man weiß was oop ist.
    Ich denke fürs erst musst du nicht unbedingt wissen wie man eigene Klassen etc. schreibt, ein paar Grundlagen von oop in Python können aber nicht schaden, denn es gibt sicher genügend Bibliotheken die irgendwelche Objekte als Schnittstelle verwenden. Und wenn ich eines über python gelernt habe, dann ist es dass man andauernd Bibliotheken von anderen einbindet. Dann solltest du zumindest damit klar kommen ein Objekt zu erzeugen und eine Methode aufzurufen die ein Objekt als Parameter bekommt oder ähnliches.

  5. #5
    Mitglied Avatar von saddy
    Registriert seit
    Jul 2013
    Ort
    *.*
    Beiträge
    3.462

    Re: Python lernen - wie wichtig ist oop?

    Hatte OOP zusammengefasst so in meinem Hinterstübchen abgespeichert:
    "Macht Sinn wenn ich mit einer Sache in der Form in der sie das erste mal auftrat oder in leicht abgewandelter Form öfter als 2-3x mal was machen will"

    Ich fand "das Auto Beispiel" als Erklärung zu OOP von Anfang an sehr gut verständlich:

    Spoiler: 


    Ein Automobil ist je nach Sichtweise ein mehr oder weniger komplexes Objekt, das sich beispielsweise stets durch folgende Ausprägungen (Werte) von Eigenschaften (Attribute) beschreiben lässt:

    Hersteller
    Typ
    Farbe
    Zulassungsjahr

    Diese Eigenschaften repräsentieren also die Daten des Objekts. Ebenso verfügt ein Auto stets über bestimmte Fähigkeiten, d. h., es kann bestimmte Funktionen/Aufgaben ausführen. Sie werden mit Blick auf die objektorientierte Programmierung als Methoden bezeichnet. Mit Bezug auf das Beispiel sind folgende Fähigkeiten (Methoden) von Interesse:

    Beschleunigen
    Bremsen

    Unter Objekten versteht man nunmehr die Zusammenfassung von Daten und Funktionen. Dabei gehört ein konkretes Objekt zu einer Klasse. Eine Klasse wiederum ist der Bauplan für die Objekte. Mit Blick auf die Abbildung haben wir eine allgemeine (abstrakte) Klasse Auto vorliegen. Konkretisiert man ein bestimmtes Auto anhand seiner spezifischen Werte, so gelangt man zum Objektbegriff. Konkret: Das Fahrzeug mit dem Kennzeichen EF-LN-88 ist ein konkretes Objekt der Klasse Auto. Dabei weist es die folgenden konkreten Werte der o. g. Eigenschaften auf:

    Hersteller = Toyota;
    Typ = Avensis,
    Farbe = grau,…

    Gleichwohl verfügt auch dieses konkrete Automobil über die Fähigkeiten (Methoden) zu beschleunigen und zu bremsen. Mittels der objektorientierten Programmierung wird also versucht, die reale Welt – soweit wie das für die Lösung der anstehenden Probleme notwendig ist – möglichst exakt (1:1) abzubilden. Methoden dienen auch gleichzeitig dazu, die Werte bestimmter Eigenschaften bei Bedarf zu modifizieren. So könnte eine Methode lackieren aus dem grauen PKW das farbenfrohe blaue Modell machen (Abb. 2).


    Von hier geklaut: https://entwickler.de/online/develop...ng-197372.html

  6. #6
    since 1998

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    25.661
    ngb:news Artikel
    4

    Re: Python lernen - wie wichtig ist oop?

    Man kann OOP auch gut für eigene Datenstrukturen/Datenklassen hernehmen die aufeinander aufbauen. Beispiel fürs Zeichnen, angefangen mit einer Klasse Punkt die dann weiterverwendet wird um neue Klassen damit aufzubauen.

    Die Klasse "Point"/Punkt mit den Attributen:
    x + y + color

    Die Klasse "Linie" die zwei Typen von Point enthält:
    point1 (x,y) + point2 (x,y) (Startpunkt -> Endpunkt) + color (eigenes Attribute unabhängig von Point),
    Edit: Oder wahlweise eine Liste von Punkten.

    Die Klasse Viereck die die Klasse "Linie" einbindet:
    Linie1 (x, y, color), Linie2 (x,y, color..), Linie3, Linie4 +
    eigenes Attribut "Füllfarbe"

    Um es noch etwas spannender zu machen, die Klasse "Polygon":
    Anzahl Linien/Pfade (Beispiel 6 usw...) als Attribut "lineCount".
    Linie1, Linie2, Linie3, Linie4, Linie5, Linie6 usw....

    Ich hoffe das Beispiel macht Sinn für dich.

    Das sind alles Datenstrukturen die mit Klassen arbeiten. Vererbung (inheritance) findet hier noch nicht statt - da finde ich das Auto/PKW Beispiel von Saddy sehr gut.
    Geändert von theSplit (04.08.20 um 20:46 Uhr)

  7. #7
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    4.789
    ngb:news Artikel
    3

    Re: Python lernen - wie wichtig ist oop?

    Ja, paar OOP Grundlagen sind nicht verkehrt. Aber da brauchst du nicht tiefer einsteigen.
    Datenbanken wirst du dich vermutlich schon eher zwangsläufig mit beschäftigen müssen. Ist aber relativ easy. Tipp: SQLite bringt dich sehr, sehr weit, lass dir nicht sofort ein "richtiges" Datenbankmanagement System aufschwatzen weil es schneller sei.
    Geändert von BurnerR (04.08.20 um 20:47 Uhr) Grund: theSplit kommentar entfernt
    Meine Pronomen sind 'em' und 'uhr'. Bitte achtet darauf in euren Beiträgen.

  8. #8
    Mitglied

    (Threadstarter)


    Registriert seit
    Dec 2017
    Beiträge
    11

    Re: Python lernen - wie wichtig ist oop?

    Danke fuer reichlich input.
    Was hat's gebracht?
    Meine anfaengliche Angst vor oop wandelt sich (langsam) zu "Lust auf oop", oder realistisch formuliert in "Ja, ich will".

    Das "Auto-Beispiel" von saddy kannte ich schon aus meinem Lehrbuch (T. Theis - Einstieg in Python), wird dort in aehnlicher Form gebracht. Ich versuche gerade, um es nicht nur schematisch zu lernen, dieses Modell auf "Wohnung" zu uebertragen.
    Den Gedanken von BurnerR zu SQLite muss ich noch vertiefen. Bisher hatte ich immer an MariaDB gedacht - und ueberlegt - ob mir Python-Datenbankkenntnisse bei meinem wordpress blog nuetzlich sein koennten.

  9. #9
    Mitglied
    Registriert seit
    Jul 2013
    Ort
    /dev/null
    Beiträge
    2.822

    Re: Python lernen - wie wichtig ist oop?

    Ich geb mal noch'n Ansatz:

    Wenn du eine relationale Datenbank (MySQL, SQLite usw.) hast. dann stell Dir das so vor:

    DB <-> OOP-Projekt
    Tabelle = Klasse
    Spalte = Attribut
    Datensatz = Instanz der Klasse mit zugewiesenen Werten
    Stored Procedure = Methode

    Als ich vor 15 Jahren mal LAMP programmiert hab, hatte ich tatsächlich angefangen, dass auch so umzusetzen, d.h. ich hab die Datenbankstruktur über Klassen auch so im PHP abgebildet. Bei Ruby on Rails und Hibernate ist das bereits über das Framework so vorgegeben.

    Die o.g. Erklärungen mit dem Auto und dem Kreis sind zwar schön, aber mit dem Ansatz bin ich am Anfang jedesmal auf die Nase gefallen. Die intensive Thematisierung der Vererbung, und genau in diese Richtung gehen die Erklärungen, sind für OOP-Anfänger bzw. Einsteigerprojekte ziemlich irrelevant.

  10. #10

    Re: Python lernen - wie wichtig ist oop?

    Zitat Zitat von hol Beitrag anzeigen
    Bisher hatte ich immer an MariaDB gedacht - und ueberlegt - ob mir Python-Datenbankkenntnisse bei meinem wordpress blog nuetzlich sein koennten.
    MariaDB ist MySql, bringt dir bei Wordpress dann natürlich auch was, da die Befehle die gleichen sind. WP hat viele Helfer für die Datenbank (get_field('..'), get_option('..')) manchmal sind ordentliche Kenntnisse aber nicht verkehrt. Auch SQLite ist schon mal ein super schritt, hat den Vorteil das du weniger einzurichten brauchst, SQLite kann bestimmte Sachen von MySQL/SQL nicht, daran solltest du aber Anfangs nicht scheitern, denke ich.

  11. #11
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    4.789
    ngb:news Artikel
    3

    Re: Python lernen - wie wichtig ist oop?

    Meine persönliche Meinung zu OOP:
    Entweder ist es in erster Linie Spielerei bzw. um sein Programm ein wenig aufzuräumen (was aber auch ohne OOP ginge) oder es hat einen sehr großen Mehraufwand für relativ wenig Nutzen für kleinere Projekte. Ohne weiterführendes Wissen und Erfahrung wie z.B. SOLID Prinzip steht OOP schnell mal mehr im Weg als es hilft.
    Man sollte den Fokus eher auf das entkoppeln legen (was mit oder ohne OOP geht). Entkoppeln bedeutet, dass verschiedene Programmteile voneinander nichts wissen müssen um zu funktionieren und nur über möglichst kleine Schnittstellen interagieren.
    Gerade Vererbung wird bei OOP gerne groß und breit besprochen, aber Vererbung bedingt eine sehr starke Koppelung und ist daher ein problematisches Werkzeug wenn es nicht sehr präzise eingesetzt wird.


    btw. geht der Trend seit einigen Jahren auch weg von "OOP everywhere" und mehr hin zu "Data-centric" bzw. Spaghetticode () und ich rechne mit einem weiter steigenden Functional Programming Trend in den nächsten Jahren.
    Meine Lieblings-Sprache Julia z.B. unterstützt zwar diverse OOP Mechanismen, aber z.B. keine Klassen.
    Für diesen Beitrag bedankt sich MingsPing
    Geändert von BurnerR (05.08.20 um 12:29 Uhr)
    Meine Pronomen sind 'em' und 'uhr'. Bitte achtet darauf in euren Beiträgen.

  12. #12

    Re: Python lernen - wie wichtig ist oop?

    Mit den Echtweltbeispielen à la Auto bin ich auch latent unglücklich. Einerseits sind sie sehr eingängig, andererseits hat das nur bedingt etwas damit zu tun, wie man in einer gesunden Codebasis Klassenhierarchien baut. Dass sich die echte Welt auch nur annähernd 1:1 in Klassen abbildet, habe ich noch nie gesehen. Los geht’s meistens damit, wie man Daten verarbeiten will. Und daraus ergeben sich dann darauf zugeschnittene Klassen.

    Sind wir uns eigentlich einig, wo OOP anfängt und aufhört? Ich meine da mehr oder weniger subtile Unterschiede zu erkennen. Quick Google nach Alan Kay: http://userpage.fu-berlin.de/~ram/pu...doc_kay_oop_en
    OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
    Hm. Also Methodenaufrufe, private Daten und Polymorphie … so grob. theSplit, du bist raus. Das Point/Line-Beipspiel würde ich tatsächlich nicht als OOP ansehen. Eher strukturierte Datenhaltung, Komposition von Produkttypen. Für OOP fehlt imo zumindest noch ein bisschen Verhalten zu den Daten.

    Weil Python bleibe ich dabei: »Klassen schnüren Daten und zugehörige Funktionalität zusammen«. Erstmal reicht das nicht nur in Sachen OOP. Dank Duck-Typing ist damit auch Vererbung und Polymorphie abgedeckt. Beispiel:

    Code:
    def foo(some_object):
        some_object.miau(42);
    Es ist wurscht, welchen Typ `some_object` hat. Solange das Ding eine Methode namens `miau()` hat, die man mit einer Zahl als einzigem Argument aufrufen kann, passt alles. Gerade als Anfänger oder für kleine Skripte ist das ein gewaltiger Vorteil.

    Zitat Zitat von BurneR
    Gerade Vererbung wird bei OOP gerne groß und breit besprochen, aber Vererbung bedingt eine sehr starke Koppelung
    Danke! Wie oft ich mir schon den Mund fusselig geredet habe, dass eine Klassenhierarchie keine lose Kopplung ist! …
    Für diesen Beitrag bedanken sich MingsPing, BurnerR

  13. #13

    Re: Python lernen - wie wichtig ist oop?

    OT: Sehr gute Beiträge von euch beiden.

    Ich bin ja eher in der funktionalen Programmierungsecke zu Hause, da erstaunt es mich immer wieder, wie Leute denken, es gelte FP vs OOP, wobei das zwei orthogonale Paradigmen sind. Da wird oft imperative Programmierung reingemischt, vermischt und gleichgesetzt.
    Für diesen Beitrag bedankt sich pspzockerscene

  14. #14
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    4.789
    ngb:news Artikel
    3

    Re: Python lernen - wie wichtig ist oop?

    Das hier geht gerade durch die IT News:
    Scientists rename human genes to stop Microsoft Excel from misreading them as dates
    Also wenn Naturwissenschaftler nicht nur ohne Programmieren auskommen für ihre Analysen und Auswertungen, sondern sogar weitesgehend auskommen, ohne Excel vernünftig bedienen zu können, dann bin ich sicher, dass man eine ganze Weil ohne OOP auskommen wird/kann. :-D
    Für diesen Beitrag bedankt sich Roin
    Meine Pronomen sind 'em' und 'uhr'. Bitte achtet darauf in euren Beiträgen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •