__init__ et les arguments en Python

Je veux comprendre les arguments du constructeur __init__ en Python.

class Num:
    def __init__(self,num):
        self.n = num
    def getn(self):
        return self.n
    def getone():
        return 1
myObj = Num(3)

print myObj.getn()

RÉSULTAT: 3

J'appelle le getone() méthode:

print myObj.getone()

RÉSULTAT: Erreur 'getone()' ne prend pas d'arguments (1given).

J'ai donc remplacer:

def getone():
    return 1

avec

def getone(self):
    return 1

RÉSULTAT:1 C'est OK.

Mais getone() méthode n'a pas besoin d'arguments.

Dois-je utiliser argument sans fondement?

  • ils ne sont pas dénués de sens. chaque méthode d'une classe ont toujours un argument implicite, de l'instance. En C++ c'est la même chose, mais vous ne verrez jamais dans la liste d'arguments, car il apparaît comme par magie des buissons de la fée de la forêt. Python est Explicit is better than implicit.
  • Vous pouvez utiliser @staticmethod et @classmethod décorateurs à faire ce que vous voulez. Voir l'exemple dans ma réponse.
  • même si vous le nom de la méthode init(self,param) vous pouvez obtenir l'erreur si vous n'avez pas de retrait de la def et donc la portée de la init méthode n'est pas dans la classe ...
InformationsquelleAutor Yugo Kamo | 2011-03-02