2015-04-03 113 views
0

嗨,大家好,我正在努力與這些類。
這就是我要做的事情:cours代表courseetudiant代表student。我必須創建一個班級學生,將執行以下操作,我也必須使用repr。因此創建了一個學號對象,並添加課程在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

不工作怎麼樣?什麼不按照你期望的方式工作? – 2015-04-03 20:28:07

+0

這就是當我嘗試列出字典<__ main __。Etudiant對象在0x000000000330BCC0> – 2015-04-03 20:30:04

+0

時,得到的結果閱讀此:http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python – alfasin 2015-04-03 20:32:53

回答

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