mein Klassen - Instanzen problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nitrogen
User
Beiträge: 7
Registriert: Freitag 4. Januar 2008, 21:49

Sonntag 12. Juli 2009, 15:19

Hey

Ich habe zwar schon mal so eine ähnliche frage gestellt aber ich glaube ich kann sie jetzt besser erklären:

Das iat mal mein "Problem" code:

Code: Alles auswählen

# -*- coding: cp1252 -*-

class Kontenverwaltung:
    def __init__(self):
        pass
        
    def neuesKonto(self,Inhaber,Name,Geld):
        [color=red]Inhaber = konto(Name,Geld)[/color]

class konto(Kontenverwaltung):
    def __init__(self,Name,Geld):
        self.Name = Name
        self.Geld = Geld
        print "neues Konto",Name,"mit",self.Geld,"€ angelegt"
        
    def minusGeld(self,Geld):
        self.Geld = self.Geld - Geld
        print self.Name,"hat",Geld,"abgezogen bekommen"
        print self.Name,"hat noch",self.Geld,"€"
        
    def plusGeld(self,Geld):
        self.Geld = self.Geld + Geld
        print self.Name,"hat",Geld,"dazu bekommen"
        print self.Name,"hat noch",self.Geld,"€"
es geht um den rot markierten teil
ich würde gerne während das programm läuft die möglichkeit haben Instanzen zu erzeugen

das habe ich jetzt schon sehr lange probiert aber es gelingt mir einfach nicht. ich weis auch garnicht ob es überhaupt möglich ist

wenn mir jemand helfen kann währe das super
Lg nitrogen
BlackJack

Sonntag 12. Juli 2009, 15:51

@Nitrogen: Du erzeugst zur Laufzeit bereits ein neues Exemplar vom Typ `konto` und bindest das Objekt an den lokalen Namen `Inhaber`. Und was denkst Du was mit dem Namen, und damit auch mit dem Objekt passiert, wenn die Methode abgearbeitet ist!?

Die Vererbungsbeziehung ist falsch. Ein Konto ist keine Kontoverwaltung.

Mal von den Namenskonventionen abgesehen, solltest Du auch die Namen selbst etwas besser wählen. "Geld" ist keine Eigenschaft von einem Konto. Das wäre eher ein "Betrag". Und wie man an ein Konto das Ettikett "Inhaber" kleben kann, ist mir auch nicht so ersichtlich!?

Die ganzen Textausgaben gehören nicht in die Programmlogik.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Sonntag 12. Juli 2009, 16:29

So mal ganz simple:

Code: Alles auswählen

class konto(object):
    def __init__(self,Name,Nummer,KtoStand=0):
        self.Name = Name
        self.Nummer = Nummer
        self.KtoStand = KtoStand


#Instanz1
k1 = konto("Bernd Mustermann",1234567)

#Instanz2
k2 = konto("Vorname Nachname",7858465,1000)
bords0
User
Beiträge: 191
Registriert: Mittwoch 4. Juli 2007, 20:40

Sonntag 12. Juli 2009, 19:07

Nitrogen hat geschrieben:Meinst du sowas?

Code: Alles auswählen

# -*- coding: cp1252 -*-

class Kontenverwaltung:
    def __init__(self):
        self.konten = {}
        
    def neuesKonto(self,Inhaber,Name,Geld):
        self.konten[Inhaber] = konto(Name, Geld)

class konto:
    def __init__(self,Name,Geld):
        self.Name = Name
        self.Geld = Geld
        print "neues Konto",Name,"mit",self.Geld,"€ angelegt"
        
    def minusGeld(self,Geld):
        self.Geld = self.Geld - Geld
        print self.Name,"hat",Geld,"abgezogen bekommen"
        print self.Name,"hat noch",self.Geld,"€"
        
    def plusGeld(self,Geld):
        self.Geld = self.Geld + Geld
        print self.Name,"hat",Geld,"dazu bekommen"
        print self.Name,"hat noch",self.Geld,"€"
Ich empfehle PEP 8 zu beachten.
Antworten