2017-07-03 4 views
1

Mon code fonctionne parfaitement sauf la dernière partie. Je veux recréer l'objet avec la fonction repr mais cela ne marche pas. J'ai tout essayé ici et sur le web mais je suis toujours aussi confuse. Y a-t-il un moyen de le faire et si oui, quelle est la syntaxe?Comment reconstruire l'objet avec repr?

class Modulo(object): 

    def __init__(self, grondtal, waarde = 0): 
     self.grondtal = grondtal 
     self.waarde = waarde % grondtal 

    def __call__(self, m): 
     return Modulo(self.grondtal, m) 

    def __add__(self, other): 
     return Modulo(self.grondtal, self.waarde + other.waarde) 

    def __sub__(self, other): 
     return Modulo(self.grondtal, self.waarde - other.waarde) 

    def __mul__(self, other): 
     return Modulo(self.grondtal, self.waarde * other.waarde) 

    def __eq__(self, other): 
     return self.waarde == other.waarde and self.grondtal == other.grondtal 

    def __ne__(self, other): 
     return not self.__eq__(other) 

    def __str__(self): 
     return '[%s %% %s]' % (str(self.grondtal), str(self.waarde)) 

    def __repr__(self): 
     return '%s' %Modulo(self.grondtal, self.waarde) 
+0

'retour « % s,% s '% (self.grondtal, self.waarde) ' –

+0

On dirait que vous voulez' return 'Modul o (% s,% s) '% (self.grondtal, self.waarde) '. – Matthias

+0

@ ChristianDean quand je cours le vôtre alors je reçois: objet 'tuple' n'a pas d'attribut 'waarde' –

Répondre

4

Vous voulez sans doute ceci:

def __repr__(self): 
    return "Modulo(%d,%d)" % (self.grondtal, self.waarde) 

Ou, un peu plus générique:

def __repr__(self): 
    return "%s(%d,%d)" % (self.__class__.__name__, self.grondtal, self.waarde) 

Par exemple:

>>> m = Modulo(3,2) 
>>> repr(m) 
'Modulo(3,2)'