2016-11-23 7 views
1

Моя работа-выход: Это присваиваниекласс Python __str__

class Person(object): 
    def __init__(self, name): 
     self.name = name 

    def __str__(self): 
     if isinstance(person1, Lecturer): 
      return "Name: " + self.name + "\tOccupation: " + self.occupation 
     elif isinstance(person2, Student): 
      return "Name: " + self.name + "\tStudent Number: " + self.studentNumber 

class Lecturer(Person): 
    def Occupation(self, occupation): 
     self.occupation = occupation 

class Student(Person): 
    def StudentNumber(self, studentNumber): 
     self.studentNumber = studentNumber 

person1 = Lecturer("Elisha Nsemwa") 
person2 = Student("Fabian Hamza") 

person1.Occupation("Senior Lecturer") 
person2.StudentNumber("HD5603") 

print person1 
print person2 

Мой выход:

Name: Elisha Nsemwa Occupation: Senior Lecturer 

"assignment.py", line 26, in <module> 
print person2 

"assignment.py", line 7, in __str__ 
return "Name: " + self.name + "\tOccupation: " + self.occupation 
AttributeError: 'Student' object has no attribute 'occupation' 

person1 выполнить, если часть, это нормально выход получить печатные, теперь моя ошибка person2 выполнить if, а не elif; как я могу исправить эту

ответ

1

В

def __str__(self): 
    if isinstance(person1, Lecturer): 
     return "Name: " + self.name + "\tOccupation: " + self.occupation 
    elif isinstance(person2, Student): 
     return "Name: " + self.name + "\tStudent Number: " + self.studentNumber 

вы тестируете person1 и person2, так isinstance(person1, Lecturer) всегда true. То, что вы хотите знать, является примером self:

...  def __str__(self): 
...   if isinstance(self, Lecturer): 
...    return "Name: " + self.name + "\tOccupation: " + self.occupation 
...   elif isinstance(self,Student): 
...    return "Name: " + self.name + "\tStudent Number: " + self.studentNumber 
... 

... 

>>> print person1 
Name: Elisha Nsemwa  Occupation: Senior Lecturer 
>>> print person2 
Name: Fabian Hamza  Student Number: HD5603 
Смежные вопросы