'int' object n'est pas appelable

Je suis en train de définir un simplement Fraction classe

Et j'obtiens cette erreur:

python fraction.py 
Traceback (most recent call last):
File "fraction.py", line 20, in <module>
   f.numerator(2)
TypeError: 'int' object is not callable

Le code suivant:

class Fraction(object):
    def __init__( self,  n=0, d=0 ):
       self.numerator = n
       self.denominator = d
    def get_numerator(self):
        return self.numerator
    def get_denominator(self):
         return self.denominator

    def numerator(self, n):
         self.numerator = n
    def denominator( self, d ):
         self.denominator = d

    def prints( self ):
          print "%d/%d" %(self.numerator, self.denominator)

if __name__ == "__main__":
    f = Fraction()
    f.numerator(2)
    f.denominator(5)
    f.prints()

Je pensais que c'était parce que j'avais numerator(self) et numerator(self, n) mais maintenant, je sais que Python n'a pas de surcharge de la méthode ( fonction de la surcharge), j'ai donc renommé pour get_numerator mais ce n'est pas le problème.

Que pourrait-il être?

Comme un débutant, vous devez apprendre, qu'en Python il n'est pas nécessaire pour les méthodes getter et setter dans ces cas simples. Ayant tout juste d'attributs pour le numérateur et le dénominateur est tout simplement parfait et accepté. Et si vous voulez vraiment être explicite sur les getter et setter fonctions, vous devez faire vos attributs protégés par un trait de soulignement. De toute façon, votre nom-clash problème ne se produira pas.

OriginalL'auteur OscarRyz | 2010-04-23