2015-01-03 6 views
-3
class Course(object): 
    def __init__(self,cnum,name): 
     self.name = name 
     self.cnum = cnum 
    def __str__(self): 
     return 'Course:' , self.cnum , self.name 

class AssigendCourse(Course): 
    def __init__(self,Course,dept,year,semester): 
     self.name = Course.name 
     self.cnum = Course.cnum 
     if dept == 'SE' or dept == 'CE' or dept == 'CIE' or dept == 'ME': 
      self.dept = dept 
     else: 
      self.dept = None 
     if year >= 1 and year <= 4: 
      self.year = year 
     else: 
      self.year = None 
     if semester >= 1 and semester <= 3: 
      self.semester = semester 
     else: 
      self.semester = None 
    def __str__(self): 
     return 'Course: ' , self.name , self.cnum 

результатов в этом типе ошибкиTypeError: __str__ вернулся нестроковая

TypeError: __str__ returned non-string (type tuple) 

Я не могу понять, какой тип синтаксиса мне нужно использовать для __str__ FUNC, чтобы получить печать для объект при использовании:

it = iter(db) 
for i in it: 
    print(i) 

ответ

8

Ваши __str__ методы возвращают кортежи:

def __str__(self): 
    return 'Course:' , self.cnum , self.name 

Запятая делает это кортежем.

Вам нужно будет присоединиться к этим значениям; Я рекомендую форматирование строки:

def __str__(self): 
    return 'Course: {} {}'.format(self.cnum, self.name) 
+0

Yeap вот ответ Большое спасибо –

+0

Спасибо большое .. Простое и элегантное решение! +1 –