2017-04-08 15 views
0

Ich bin neu in Python und Lernklassen. Ich habe Probleme gehabt, die Methode charge in der folgenden Klasse zurückzugeben. Ich habe versucht mit .fee und charge funktionieren beide nicht.Rückgabe-Methode aus der Klasse

class Job: 

rate = 1.04 


def __init__(self, location, salary, description, fee) : 
    self.location = location 
    self.salary = salary 
    self.description = description 
    self.fee = fee 



def Charge(self): 
    self.fee = int(self.fee + Job.rate) 


job1=Job("london",23000,"Accounts Assistant",1200) 
job2=Job("london",25000,"Accounts Assistant",500) 

job1.rate = 1.05 

job1.charge() 
print(job1.fee) 
+2

zu zeigen Was ist Ihr Problem? Erhalten Sie eine Fehlermeldung (dann sollten Sie sie auch hier einfügen), oder ein Ergebnis, das Sie nicht erwartet haben (geben Sie uns die fehlerhafte Ausgabe und was Sie erwartet haben). Der Einzug Ihres Codes ist falsch. Alles, was Teil der Klasse ist, sollte eingerückt werden. Sogar richtig eingerückt, erhalten Sie Fehler wegen Tippfehlern ('Charge' gegen' Charge' ...) Bitte korrigieren Sie dies zuerst! –

+0

Ich denke, es gibt einen Tippfehler. Lademethode beginnt mit einem Caps 'C'. –

Antwort

0

Vielleicht ein bisschen Formatierung und einige Kommentare könnten helfen. Ich setze den Fall von charge richtig auf Charge Methodenname. Ich habe Charge2 den Unterschied zwischen Job.rate und self.rate in dem Verfahren

class Job: 

    rate = 1.04 

    def __init__(self, location, salary, description, fee) : 
     self.location = location 
     self.salary = salary 
     self.description = description 
     self.fee = fee 

    def Charge(self): 
     self.fee = int(self.fee + Job.rate) # use class amount 1.04 
    def Charge2(self): 
     self.fee = int(self.fee + self.rate) # use instance (11.05 set below) 

job1 = Job("london",23000,"Accounts Assistant",1200) # create instance 
job2 = Job("london",25000,"Accounts Assistant",500) # create instance 

job1.rate = 11.05 

job1.Charge() # execute, adds 1.04 to 1200, then make int of that 
print(job1.fee) # outputs 1201 
job1.Charge2() # execute, adds 11.05 to 1201, then make int of that 
print(job1.fee) # outputs 1212 
print(job2.fee) # outputs 500 
job1.Charge2() # execute, adds 11.05 to 1212, then make int of that 
print(job1.fee) # outputs 1223 
job1.Charge() # execute, adds 1.04 to 1223, then make int of that 
print(job1.fee) # outputs 1224 
+0

Vielen Dank für die Lösung. Ich entschuldige mich für die schlampige Präsentation meines Codes Ich versuche so schnell wie möglich zu lernen und ich habe den Einzug übersehen. Ich kann sehen, wie die Klassenvariable für eine bestimmte Instanz geändert werden kann und wie die Ausgabe kann anders sein, wenn ich benutze entweder die Klasse oder die Instanz. –

+0

Gern geschehen, wenn dies Ihre Frage nicht abdeckt, lassen Sie mich wissen, wie es nicht ist oder welche Informationen fehlen. Falls gewünscht, können Sie diesen Code hier http://pythonfiddle.com/ einfügen und sehen, dass er als Test ausgeführt wird. –

Verwandte Themen