ich habe mich mal wieder an Python rangewagt und habe jetzt angefangen OOP (in Python) zu lernen.
Das Buch mit dem ich Python lerne hat, dann diese Aufgabe gehabt,
Code: Alles auswählen
## ??
Allerdings steht in Zeile 2
Code: Alles auswählen
class Animal(object):
Code: Alles auswählen
## Animal is-a object (yes, sort of confusing) look at the extra credit
Vorher wird das Prinzip am Beispiel von einem Fisch erklärt:
Man hat einen Lachs, namens Mary.
Der Unterschied zwischen einem Lachs und Mary ist, dass Mary eine spezifische "Instanz" von einem Lachs ist. Mit Instanz ist gemeint, dass Mary auf der Basis von einem anderen Lachs "erstellt" wurde und jetzt etwas reales ist, dass Lachs-artige Eigenschaften besitzt.
Dann wird gesagt, dass ein Fisch eine Klasse ist, ein Lachs ist auch eine Klasse und Mary ist ein Objekt.
Ein Fisch ist eine Klasse, denn er ist nichts reales, eher ein Wort, dass wir benutzen um Dinge mit ähnlichen Eigenschaften zu beschreiben. -> Hat es Flossen? Hat es Kiemen? Lebt es im Wasser? Oke das ist wahrscheinlich ein Fisch.
Dann geht die Erklärung weiter, es kommt ein Ph.D. und sagt, "warte mal, dieser Fisch ist eigentlich ein Atlantischer Lachs, auch bekannt als Lachs." -> Der Professor hat den Fisch näher erläutert und somit eine neue Klasse namens "Lachs" erstellt, diese hat genauere Eigenschaften. Eine längerne Nase, rötliches Fleisch, groß, lebt in einem Ozean oder frischen Wasser, ist lecker? Wahrscheinlich ein Lachs.
Dann geht es weiter, es kommt ein Koch und sagt zu dem Ph.D. "Nein, siehst du diesen Lachs, ich nenne ihn Mary und ich werde ein leckeres Filet mit einer leckeren Soße aus ihm machen." Jetzt hat man eine Instanz von einem Lachs (welche auch eine Instanz von einem Fisch ist), genannt Mary. Es ist etwas reales geworden, dass deinen Bauch füllt. Es ist ein Objekt geworden.
Nun hat man dies: Mary ist eine Art von einem Lachs, dieser ist eine Art von einem Fisch. Object is a class is a class.
Also
Mary = Object
Lachs = Klasse
Fisch = Klasse
Das verstehe ich nun so, dass etwas allgemeines, eine allgemeine Kategorie eine Klasse ist, dann gibt es Unterkategorien, diese sind quasi Unterklassen und dann gibt es genauer definierte Dinge, das sind dann Objekte.
Also gibt es Häuser (Klasse), Hochhäuser(Unterklasse, also auch eine Klasse) und das Haus an der Hauptstraße XY in Ort XY (ein Objekt).
Oder habe ich das ganze mit Klassen und Objekte von Grund auf Falsch verstanden?

Wenn das alles so ist, wie ich das denke müsste "Animal" aber doch eine Klasse sein, ein Tier hat ja nichts spezifisches an sich... Warum ist es denn nun ein Objekt? :/
Wäre nice, wenn mir das mal jemand erklären könnte.

Hier noch der oben erwähnte Code:
Code: Alles auswählen
## Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):
pass
## ??
class Dog(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Cat(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Person(object):
def __init__(self, name):
## ??
self.name = name
## Person has-a pet of some kind
self.pet = None
## ??
class Employee(Person):
def __init__(self, name, salary):
## ?? hmm what is this strange magic?
super(Employee, self).__init__(name)
## ??
self.salary = salary
## ??
class Fish(object):
pass
## ??
class Salmon(Fish):
pass
## ??
class Halibut(Fish):
pass
## rover is-a Dog
rover = Dog("Rover")
## ??
satan = Cat("Satan")
## ??
mary = Person("Mary")
## ??
mary.pet = satan
## ??
frank = Employee("Frank", 120000)
## ??
frank.pet = rover
## ??
flipper = Fish()
## ??
crouse = Salmon()
## ??
harry = Halibut()
Schon mal Danke im Voraus.
