2016-06-29 16 views
0

Wie kann ich eine Methode in einer Klasse mit einer Benutzereingabe erstellen?Python - Klassenmethoden mit Eingabe

Welches Argument soll ich weitergeben, wenn ich die Methode anrufe?

class Student: 

    def __init__(self): 
     self._name = ''  

    def getName(self): 
     return self._name 

    def setName(self, newName): 
     newName = input ('Inserire nome:') 
     self._name = newName 

studente = Student() 
studente.setName(newName) 
+0

wats da Zweifel ... nur knapp sein Ziel Sie erhalten – Deca

+0

meine Zweifel, dass ich weiß nicht, wie „newName“ passieren – Peter

+0

zu „setMethod“, erinnert Sie bereits tun es. .studente.setName (neuerName). Noch nicht klar – Deca

Antwort

1

Dies sollte funktionieren:

class Student: 
    def __init__(self): 
     self._name = '' 

    def getName(self): 
     return self._name 

    def setName(self, newName): 
     self._name = newName 

studente = Student() 
newName = input('Inserire nome:') 
studente.setName(newName) 

Sie wurden die Eingabe in der Methode selbst definiert, sondern außerhalb der Variable übergeben. Also wurde die Variable newName nicht außerhalb definiert. Lass es mich wissen, wenn es nicht funktioniert. Ich habe es nicht getestet, aber scheint hier der auffällige Fehler zu sein.

+0

Funktioniert gut, danke! – Peter

0

Wenn ich richtig verstanden habe, was Sie wollen, warum versuchen Sie nicht, bei der Initialisierung der Klasseninstanz nach einer Eingabe zu fragen?

class MyClass(object): 

    def __init__(self): 
     self.name = input('Enter name> ') 

X = MyClass() # when executing that line, you'll be asked for a name to input 

Dann werden Sie in der Lage sein name von X.name Attribut-Zugang und legen Sie es auf, was Sie möchten von X.name = foo

+0

das ist für Python 3+ –

-1

Sie auch mit dem eingebauten setattr und entlässt die expliziten Setter/Getter spielen könnte :

class Student: 
    pass 

student = Student() 
newName = input('Inserire nome:') 
setattr(student, 'name', newName)