2017-10-07 1 views
1

Ich bin neu in Python. In dieser Frage Ich versuche, eine Methode in Python zu erstellen, so dass ich die Informationen des Studenten ausdrucken kann von meinem Eingang:Wie kann ich mit dieser Methode umgehen, um das Ergebnis zu erhalten?

class student(): 
    def __init__(self,s=None): 
     if (s != None): 
      self.name = s[0] 
      self.age = s[1] 
     else: 
      self.name = '' 
      self.age = -1 
    def print_info(self): 
      print('Name: ',self.name) 
      print('Age: ',self.age) 

Der Eingang ist:

t = student() 
t.add_name('Sam') 
t.add_age(21) 
print(t) 

Ich erwarte, dass zu bekommen:

Name: Sam Alter: 21

ich viele Male in diesem Code versucht, die die Fehlermeldung gibt, dass „str nicht aufrufbar ist“ Dank!

+0

Der Eingabecode nicht geändert werden soll! Das Hauptproblem besteht darin, die Methode und die Funktionen zum Ausführen des Eingabecodes zu ändern. Vielen Dank! –

Antwort

0
class student(): 
def __init__(self,s=None): 
    if (s != None): 
     self.name = s[0] 
     self.age = s[1] 
    else: 
     self.name = '' 
     self.age = -1 
def __repr__(self): 
     print('Name: ',self.name) 
     print('Age: ',self.age) 

def __str__(self): 
    return 'Name: ' + self.name + '\n' + 'Age: ' + self.age.__str__() 

def add_name(self,name): 
    self.name = name 

def add_age(self,age): 
    self.age = age 
0

OK Ich sehe mehrere Probleme

1- Es gibt keine add_name oder add_age in der Klasse zu nennen.
2- Um das Objekt der erstellten Klasse als String zu drucken, benötigen Sie eine Zeichenfolgendarstellung dieser Klasse oder dieses Objekts. Diese Darstellung erfolgt über die Methode __str__, die die Zeichenfolgendarstellung zurückgibt.

#only class name changed to be first letter is capital letter 
t = Student() 
t.add_name('Sam') 
t.add_age(21) 
print(t) 

Ausgang ist

Der editierte Code

#Added inheritance of `object` as good practice 
#and changed the name to make the first letter as capital 
class Student(object): 
    def __init__(self, s=None): 
     if s is not None: 
      self.name = s[0] 
      self.age = s[1] 
     else: 
      self.name = '' 
      self.age = -1 

    #added two missing methods to set the name and the age 
    def add_name(self, name): 
     self.name = name 

    def add_age(self, age): 
     self.age = age 

    #added the method responsible for string representation 
    #of the object and the age converted to string using similar method 
    def __str__(self): 
     return 'Name: ' + self.name + '\n' + 'Age: ' + self.age.__str__() 

    def print_info(self): 
     print('Name: ', self.name) 
     print('Age: ', self.age) 

Die Eingabe in Camel Fall (erster Buchstabe ist Kapital) wie wäre (mit Wechsel des Klassennamen sein würde,

Name: Sam
Alter: 21

Ich hoffe, dass die Frage

Antworten
+0

Vielen Dank für Ihre Antwort! Ich habe jetzt die Idee! –

+0

Gern geschehen @HAHHA_HAH. Fühlen Sie sich frei, die Antwort als beste Antwort zu überprüfen, die Ihr Problem löste, wenn es dazu geeignet ist, oder stimmen Sie es ab, wenn Sie können. – Anddo

Verwandte Themen