2016-11-23 46 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执行if部分,这是确定的输出得到印刷,现在我的错误是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 

正在测试person1person2,所以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