Seite 1 von 1

mein Klassen - Instanzen problem

Verfasst: Sonntag 12. Juli 2009, 15:19
von Nitrogen
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

Verfasst: Sonntag 12. Juli 2009, 15:51
von BlackJack
@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.

Verfasst: Sonntag 12. Juli 2009, 16:29
von hendrikS
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)

Re: mein Klassen - Instanzen problem

Verfasst: Sonntag 12. Juli 2009, 19:07
von bords0
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.