0
votes

Pourquoi la partie inférieure du code Python donne-t-elle une erreur d'attribut?

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)

2 commentaires

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 ??


3 Réponses :


0
votes

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.

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].

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à.


0 commentaires

1
votes

Vous devez d'abord initialiser self.number1 avec [aucun] * 2 (ou similaire) avant de l'utiliser.

Cependant, j'utiliserais args directement: xxx


2 commentaires

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.



0
votes

Dans ce code: xxx

Vous essayez d'accéder à une liste appelée auto.number1 qui n'existe pas encore. Au lieu de cela, vous voulez faire quelque chose comme: xxx

ou peut-être: xxx

ou, si vous voulez juste que tous les arguments au lieu de seulement les deux premiers, simplement: xxx


0 commentaires