2017-03-18 8 views
0

Ich habe nur für einen Monat programmiert und meine Frage ist dies. Sobald ich in der Klasse fertig bin, die die Funktionen und die Klasse definiert, wie kann ich die Benutzereingabe mit den Funktionen verwenden. Jede Hilfe wird geschätzt, die ein wenig Licht werfen kann.Verwendung von Benutzereingaben in Klassen

class employee: 


    def __init__(self,first,last,pay,hours): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 



     def raise_amount(self, amount): 
      self.pay = int(input('how much would you like to raise the employee pay')) 



    def overtime(self,overtime): 
     if self.hours !=39: 
      print ("there is an error you have overtime standby") 
      num1 = self.pay/2 
      overtime = num1 + self.pay 
      print self.first, + self.overtime(self.hours) 



print employee(self.hours) 
+2

Es ist nicht klar, was Sie fragen. Was "verwendet die Benutzereingabe mit den Funktionen". bedeuten? Und Sie sollten wirklich nicht "Eingabe" innerhalb des Konstruktors aufrufen. Was passiert, wenn Sie einen Mitarbeiter aus vorhandenen Daten erstellen möchten? – Carcigenicate

+1

Markieren Sie Ihren Code und drücken Sie 'ctrl + k' während der Bearbeitung, um ihn richtig zu formatieren. – Carcigenicate

+0

Verwenden Sie den Link [Bearbeiten], um die Formatierung Ihres Codes zu korrigieren. Da Python Whitespace für die Syntax verwendet und anderen Benutzern dringend davon abgeraten wird, diese Probleme zu beheben (im Gegensatz zu anderen Teilen von Stack Overflow), können Sie nur sicher sein, welche Einrückung Sie tatsächlich verwenden. –

Antwort

2

Da es diese Klasse steht nicht viel Sinn machen, vor allem dieses Bit:

class employee: 

    def __init__(self,first,last,pay,hours): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 

von __init__ vier Argumente geben (zusätzlich zu self), bedeutet dies, dass, wenn Sie instanziieren die Klasse (über my_employee = employee(...)), müssen Sie alle diese Argumente übergeben, dh in Ihrem Code müssen Sie my_employee = employee("John", "Cleese", "£2", "5 hours") schreiben. Aber das ist sinnlos, denn die __init__ Funktion ignoriert dann vollständig alle diese Informationen, wenn es die Attribute der Klasse setzt und stattdessen Benutzereingaben verwendet. Sie wollen einfach nur das tun:

class employee: 

    def __init__(self): 
     self.first = raw_input("whats your first name") 
     self.last = raw_input("whats your last name") 
     self.pay = int(input("how much do you make an hour")) 
     self.hours = int(input("how many hours do you have")) 

    ... 

my_employee = employee() 

Es wäre jedoch besser, eine allgemeine Mitarbeiter-Klasse zu erstellen, und dann in Situationen, in denen Sie benötigen einen Mitarbeiter über den Eingang zu erstellen, können Sie immer noch so. Speziell:

class Employee: 
    def __init__(self, first, last, pay, hours): 
     self.first = first 
     self.last = last 
     self.pay = pay 
     self.hours = hours 

    ... 

your_employee = Employee(input("First name: "), input("Last name: "), 
    int(input("Pay: ")), int(input("Hours: "))) 
+2

Ich wiederhole es, nur weil ich denke, dass es wirklich wichtig ist: Sie sollten nicht nach Benutzereingaben im Konstruktor fragen. Dadurch müssen Sie die Daten jedes Mal manuell eingeben, wenn Sie einen Mitarbeiter erstellen möchten. Was ist, wenn Sie bereits eine Datei mit den Informationen haben? Fragen Sie nach Eingabe außerhalb des Konstruktors und übergeben Sie die Daten. – Carcigenicate

+0

Danke für die Kommentare, das ist völlig richtig. Ich wollte nicht raten, was diese Person versucht, weil es vermutlich nur für Bildungszwecke ist. Aber in echtem Code ja, setze 'self.first = first' und so weiter, und wenn du die Klasse mit Benutzereingaben instanziieren musst, mache 'employee (input (...), ...)'. – Denziloe

+1

Ich weiß, dass es offtopic für die Frage ist, ich dachte nur, dass das eine Gewohnheit ist, die abgeschossen werden sollte, bevor es irgendwelche Dynamik für das OP gewinnt. Ich wollte deine Antwort nicht ablenken. +1 – Carcigenicate

Verwandte Themen