2015-04-03 3 views
0

Привет, ребята, я борюсь с этими классами.
Это то, что я должен сделать: cours означает course и etudiant означает student. Мне нужно создать класс Student, который сделает следующее, и я также должен использовать repr. таким образом, создать объект с номером студента и добавить курсыВывод a dict в python

>>> d = Etudiant(12456) 
>>> d.addCours('csi2520') 
>>> d.addCours('csi2772') 
>>> d.addCours('csi2510') 
>>> d 
12456:[ 'csi2520', 'csi2772', 'csi2510'] 
>>> d.cours('csi2510') 
True 
>>> d.cours('csi4900') 
False 

Это то, что я сделал, но это не работает

class Etudiant: 
    cours=[] 
    def __init__(self, numero): 
     self.numero=numero 
     self.classe={self.numero:self.cours} 
     repr(self.classe) 
    def addCours(self, cours1): 
     self.cours.insert(-1,cours1) 

пожалуйста, держать его просто я новичок

+0

Не работает, как? Что не работает так, как вы ожидаете? –

+0

Это то, что я получаю, когда пытаюсь перечислить словарь <__ main __. Объект Etudiant в 0x000000000330BCC0> –

+0

Прочтите это: http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python – alfasin

ответ

3

Чтобы изменить, как Python объект выглядит, когда он печатается, вам нужно реализовать магический метод, называемый __repr__ (короткий для представления). Вам также не нужно хранить номер студента в переменной cours:

class Etudiant(object): 
    def __init__(self, numero): 
     self.numero = numero 
     self._cours = [] 
    def addCours(self, cours): 
     self._cours.append(cours) 
    def cours(self, cours): 
     return cours in self._cours 
    def __repr__(self): 
     return '{}: {}'.format(self.numero, self._cours) 

Тестирование:

>>> d = Etudiant(12456) 
>>> d.addCours('csi2520') 
>>> d.addCours('csi2772') 
>>> d.addCours('csi2510') 
>>> d 
12456: ['csi2520', 'csi2772', 'csi2510'] 
>>> d.cours('csi2510') 
True 
>>> d.cours('csi4900') 
False 
Смежные вопросы