2013-02-07 2 views
0

EDIT: Mon erreur - il y avait un autre nom de méthode (avec le trait de soulignement) à un autre endroit qui avait seulement une passe dans son corps. Stupide que je suis. S'il vous plait fermer.Underscores dans les noms de méthode [erreur stupide]

J'ai une classe avec deux méthodes, chacune retournant une chaîne simple. La seule différence légèrement qualitative entre ces deux méthodes est que l'un a un trait de soulignement dans son nom tandis que l'autre ne le fait pas. Cependant, celui avec le trait de soulignement ne retourne pas la chaîne lorsqu'il est appelé. L'utilisation de traits de soulignement dans les noms de méthodes semble suivre PEP 8 guidelines regarding method names.

J'ai lu attentivement le Python tutorial on classes mais il ne mentionne aucune différence de comportement en fonction de l'utilisation du trait de soulignement dans le nom de la méthode. Si je supprime le trait de soulignement, la chaîne sera renvoyée.

À quoi cela cause-t-il?

Voici mon code:

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 

J'utilise Python 3.2.3.

+1

Pouvez-vous poster un programme complet démontrant cela? – ecatmur

+0

Je ne peux pas le reproduire avec ce code. L'appel des deux méthodes fonctionne comme prévu. –

+0

Désolé - découvert J'ai eu une autre méthode avec le même nom mais sans aucun code à exécuter. Toutes mes excuses pour la question stupide. – 5th

Répondre

0

Il fonctionne très bien pour moi avec Python 3.2.1 et 3.3.0:

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 


b = Board() 
print(b.f()) 
print(b.print_board()) 

Exécuté à Windows, il imprime:

c:\tmp\_Python>c:/python32/python a.py 
Hello 
Hello 

c:\tmp\_Python>c:/python33/python a.py 
Hello 
Hello 

Peut-être vous vouliez écrire:

... 
    def print_board(self): 
     print('Hello') 

et l'appeler

... 
b.print_board() 
+0

Voir mon édition - c'était juste une erreur stupide, j'ai eu une autre méthode (mais vide) avec le même nom. Je me regardais aveuglément en testant la mauvaise partie de la classe. – 5th

+0

Je vois. Pour de tels cas, l'outil pylint peut être utile. La suivante est la version en ligne http://antares.sip.ucm.es/cesar/pylint/. Il trouve également des doublons dans les définitions de fonctions. – pepr

+0

Pas tout à fait sûr si je devrais accepter la réponse ou non, fini par l'accepter. Étant donné que la question du début concernait un problème inexistant, je suppose que cela devrait être considéré comme une bonne réponse :) – 5th

Questions connexes