Je dois déterminer comment créer une classe qui trouve la pente et la longueur d'un segment de ligne et passe deux tuples qui représentent les points d'extrémité tels que (x, y). Mon problème est quand j'essaie de créer un objet de segment, il est indiqué que l'objet Int n'est pas appelable. S'il vous plaît aider
3 Réponses :
Ceci se produit car vous écrasez votre Vous devriez probablement faire quelque chose comme ça à la place (Remarque I Préfixe chaque valeur X et Y avec méthode code> avec 0 code> dans votre constructeur. Donc, lorsque vous essayez d'appeler s.length () code>, il essaie réellement d'appeler 0 () code> car vous attribuez auto.length = 0 code>. auto code> afin qu'il utilise la valeur d'attribut de l'instance): p> >>> s = Segment((1,2),(3,4))
>>> s.length
8.0
>>> s.slope
1
@zackmusgrave génial! Pensez à uPvoter et à accepter si cela vous a aidé! Que faire quand quelqu'un répond à votre question
dans le code de ce code: Vous faites une variable de longueur d'instance de classe de segment égale à 0 (a int) et à une variable de pente à 0. Alors maintenant, par exemple: p> ligne.lenght et ligne.Slope ne sont plus une fonction pour la variable de ligne. Ils sont int. Et les INT ne sont pas appelables. Vous devez modifier le nom de vos fonctions ou variables. Changer également x code> et y code> Variables dans yor lenght code> et pente code> fonctions par self.x1, auto.y1, etc. Essayez que: P> def Length(self):
return math.sqrt((self.x1+self.x2)**2+(self.y1+self.y2)**2)
Cela doit recomputer la longueur à chaque fois, cela semble assez inefficace pour que je considère que les points du segment ne changent pas
J'ai dit que si les points de ligne peuvent changer, c'est mieux. Et il n'y a aucun obstacle dans le code pour modifier les x code> ou y code> de la ligne. Si les points de segment ne changeront pas, nous n'avons plus besoin de méthodes, nous pouvons utiliser leurs attributs.
pas mon bowvote, mais la descente de ma réponse (correcte) n'est aucun moyen de répondre, même si c'était
Je suis désolé de la descendre de votre réponse.
Le problème est que vous avez le même nom pour l'attribut et la méthode. Si vous souhaitez accéder à la longueur comme à p> instance.length code> au lieu de instance.length () code> il suffit de changer la méthode
Pouvez-vous nous montrer comment vous essayez de "créer un objet de segment"?
Montrez également la traçabilité complète de l'erreur.