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()
RESULTAT : L'erreur 'getone()' ne prend pas d'arguments (1given).
Donc je remplace :
def getone():
return 1
avec
def getone(self):
return 1
RESULTAT:1 C'est OK.
Mais getone()
ne nécessite aucun argument.
Dois-je utiliser des arguments dénués de sens ?
8 votes
Ils ne sont pas dénués de sens. Chaque méthode d'une classe a toujours un argument implicite, l'instance. En C++, c'est la même chose, mais vous ne la voyez jamais dans la liste des arguments parce qu'elle apparaît comme par magie des buissons de la forêt des fées. Python est
Explicit is better than implicit
.2 votes
Vous pouvez utiliser les décorateurs @staticmethod et @classmethod pour faire ce que vous voulez. Veuillez voir l'exemple dans ma réponse.
0 votes
Même si vous nommez la méthode init(self,param) vous pouvez obtenir l'erreur si vous n'indentez pas la def et donc la portée de l'instruction init n'est pas dans la classe ...