0
votes

Appliquer des parenthèses après le nom de la méthode en classe Python

Pour un exemple simple dans une classe Python, je souhaite avoir une méthode qui double un numéro donné par l'utilisateur, lorsqu'il est exécuté.
La méthode fait son travail ou son objectif lorsqu'il est utilisé avec des parenthèses, mais lorsque la méthode est utilisée sans parenthèses, Il ne fait pas son travail de doubler le nombre et le problème principal est que l'interprète ne pose pas d'erreur ou de se plaindre non plus.
Il est supposé que l'utilisateur rien n'a mal tourné et le code est exécuté mal non détecté.
Comment réécrire une méthode dans une classe (ici "Double ()") Pour forcer l'utilisateur de la classe Mettez toujours des parenthèses à la fin, sinon il soulève une erreur ?! STRUT>

>>> class Number(): 
         def __init__(self,number):  
           self.number = number  
         def double(self):  
           self.number = self.number * 2


>>> num = Number(10)  
>>> num.number  
10  
>>> num.double    ## method does nothing when used without parantheses, and it only shows a class method  
<bound method Number.double of <__main__.Number object at 0x03B04460>>  
>>> num.number    ## the number value has not changed  
10  
>>> num.double()   ## method does its purpose right  
>>> num.number     ## now the number has been doubled   
20  


3 commentaires

Vous regardez cela la mauvaise façon que je ressens. Le blâme est absolument sur l'utilisateur / programmeur du code si elles n'appellent pas une fonction / méthode. C'est littéralement sur eux pour s'assurer qu'ils appellent des choses!


Cela dit, vous pouvez peut-être ajouter un indicateur qui montre que le doublement s'est produit, à l'aide d'une instruction d'impression à l'intérieur de la méthode .double () comme indicateur pour l'utilisateur final.


Je ne pense pas que ce soit possible ... peut-être avec un outil pelucheux de Python, ou si vous "patchs de singe" classes ou quelque chose, mais vous devez alors charger ce patch de singe avant d'exécuter leur code.


3 Réponses :


0
votes

en Python, et de nombreuses autres langues, vous utilisez la parenthèse pour appeler une fonction, si vous ne les placez pas, vous ne nommez que la fonction ne lui demandant pas d'être exécutée.

Un utilisateur n'a pas à le savoir, c'est pourquoi la méthode d'entrée existe. Essayez quelque chose comme ceci: xxx

ou si vous souhaitez utiliser votre code: xxx


0 commentaires

0
votes

Configurez votre éditeur de texte / EDI pour ajouter des parenthèses d'ouverture automatiquement lorsqu'il détecte que vous avez saisi / saisi un nom d'attribut qui ressemble à un nom de fonction.

Si l'éditeur a détecté de tort et que vous souhaitez réellement fonctionner avec l'objet méthode / fonction non liée, vous pouvez simplement enregistrer pour supprimer les parenthèses; Et si vous souhaitez réellement appeler, vous pouvez ajouter les parenthèses de fermeture. La parens automatique en fait une décision explicite d'ajouter ou non d'ajouter des parenthèses, et il vous rappellerait que l'attribut doit être appelé à prendre effet lorsque vous le modifiez comme il est possible de manquer facilement.


0 commentaires

1
votes

Le langage permet de faire référence à une méthode afin de savoir ce que vous demandez n'est pas possible. Il est toujours légal de faire num.double code> car vous pouviez stocker la référence dans une variable pour une utilisation ultérieure par exemple. XXX PRE>

Dans des cas comme celui-ci, vous pouvez le faire. Appelant num.double code> fait quelque chose en fait quelque chose, en utilisant un em> décorateur em>. p> xxx pré>

maintenant p>

n = Number(21)
n.double
print(n.number)
>>> 42


0 commentaires