class TempClass3():
def __init__(self,*args):
for i in range(len(args)):
self.number1[0]=args[0]
self.number1[1]=args[1]
print(self.number1)
temp3=TempClass3(10,20)
3 Réponses :
Lorsque vous appelez self.number1 [0] = args [0], vous demandez à Python d'abord ouvrir la liste Self.Number1 qui n'existe pas, puis trouver un élément dans cette liste inexistante. p>
Si cela n'existe pas, mais vous le transmettez une valeur, comme auto.number1 = args [0], Python créera Self.number1 et définir Self.number1 comme args [0]. P>
Vous pouvez résoudre ce problème en ajoutant la ligne auto.number1 = [0,0] au début de TempClass3 de sorte que la liste existe déjà. P>
Vous devez d'abord initialiser Cependant, j'utiliserais self.number1 code> avec [aucun] * 2 code> (ou similaire) avant de l'utiliser. args code> directement: p>
Cela a fonctionné mais je veux savoir s'il existe une raison spécifique pour laquelle Python ne le fera automatiquement pour nous ??
@Suneeldattakolipakula pourquoi devrait-il? Il y a une syntaxe plus propre pour lutter contre ce cas d'utilisation quand même. En outre, sur quel terrain l'interprète doit-il supposer que vous voulez une liste plutôt que quelque chose d'autre, dites un dict ou un ensemble juste pour en nommer quelques-uns.
Dans ce code: Vous essayez d'accéder à une liste appelée ou peut-être: p> ou, si vous voulez juste que tous les arguments au lieu de seulement les deux premiers, simplement: p> auto.number1 code> qui n'existe pas encore. Au lieu de cela, vous voulez faire quelque chose comme: p>
Voir cet article sur la création d'une liste vide d'abord Stackoverflow.com/Questtions/10712002/...
@Hannu: Tu me demandes de déclarer la liste et de l'initialiser avec aucune valeur ??