Seite 1 von 1

Verständnisfrage zu Klassen und Vererbung

Verfasst: Mittwoch 28. Dezember 2016, 23:29
von Pascal96

Code: Alles auswählen

class Kunde:
    def __init__(self, kdnr, vorname, name):
        self.kdnr = kdnr
        self.vorname = vorname
        self.name = name
    def get_name(self):
        return self.vorname + " " + self.name
    def get_kdnr(self):
        return self.kdnr

class Produkt:
    def __init__(self, artnr, bezeichnung):
        self.artnr = artnr
        self.bezeichnung = bezeichnung
    def get_artnr(self):
        return self.artnr
    def get_bezeichnung(self):
        return self.bezeichnung
    
class KundeProdukt(Kunde, Produkt):        
    def kunde_produkt(self):
        return "Kunde ", x.get_kdnr(), "kaufte ", x.get_bezeichnung()
    
k1 = Kunde(1, "Peter", "Lustig")
p1 = Produkt(7662, "PC")
x = KundeProdukt()
print(kunde_produkt())
Hallo, bin neu hier und dachte könnte mir hier vielleicht mal Hilfe besorgen. Oben sieht man ja den Code, den ich einfach aus Spaß geschrieben habe. Ich würde jetzt allerdings gerne auf die zwei Klassen Kunde und Produkt gleichzeitig zugreifen, sodass man eben einen Kunden erhält, mit dem jeweiligen Produkt, welches er gekauft hat. Ich wusste nicht so ganz, wie ich vorgehen sollte, drum habe ich eine 3. Klasse erstellt, die von beiden Klassen Kunde und Produkt erbt. Ich weiß nun leider nicht, wie der Konstruktor in dieser 3. Klasse auszusehen hat, noch ob diese 3. Klasse KundeProdukt überhaupt nötig ist. Der Programmcode in KlasseProdukt ist so auch glaube ich falsch, bin ein Neuling in Python :/
Meine Frage nun also: Wie kann ich von einer Klasse auf Funktionen einer anderen(erbenden) Klasse zugreifen, sodass ich eben einen Kunden mit dem jeweiligen Produkt bekomme? Ist die 3. Klasse notwendig?

Das Programm dient lediglich dem Verständnis von Klassen und Vererbung, ich hoffe ihr könnt mir helfen :)

Re: Verständnisfrage zu Klassen und Vererbung

Verfasst: Mittwoch 28. Dezember 2016, 23:38
von Sirius3
@Pascal96: Du bist Dir unsicher, weil »KundeProdukt« ein seltsamer Name ist. Du solltest Dir die Frage stellen, welche Beziehung Kunde und Produkt haben. Ein Hinweis darauf bietet ja schon die Methode »kunde_produkt«. Es handelt sich hierbei um einen Einkauf. Nennen wir also »KundeProdukt« in »Einkauf« um. Jetzt ist Vererbung eine »ist«-Beziehung. Doofes aber immer wieder gerne genommenes Beispiel: ein »Auto« ist ein »Fahrzeug«. Gilt diese Beziehung hier auch? Ist ein Kunde ein Einkauf oder ist ein Produkt ein Einkauf? Nein. Ein Einkauf »hat« einen Kunden und ein Produkt, das sind also Attribute, genauso wie ein eventuelles Datum. Damit sollte klar sein, wie diese 3. Klasse aufgebaut sein sollte.

Re: Verständnisfrage zu Klassen und Vererbung

Verfasst: Donnerstag 29. Dezember 2016, 00:15
von BlackJack
@Pascal96: Randbemerkung: Triviale Getter (und auch Setter) sind in Python nicht üblich. Man greift direkt auf die öffentlichen Attribute zu.