2015-04-18 1 views
1

moi avons écrit un programme simple qui accepte l'entrée de l'utilisateur et capitalise, évidemment, cela peut se faire de différentes façonsméthodes de classe interne contre les méthodes d'instance en python

class example(): 

    def say_it(self): 
     result = input('what do you wanna say to the world') 
     return result 

    def get_result(self): 
     res = self.say_it() 
     return res 

    def capitalize(self): 
     res = self.get_result() 
     res = res.upper() 
     print(res) 


def main(): 
    Ex = example() 
    res = Ex.capitalize() 

if __name__ == '__main__': main() 

Ce programme dispose de 3 méthodes dans le corps de la classe , une nouvelle instance est créée dans la fonction principale et seule la méthode de capitaliser est appelée et la classe fait toute la magie et imprime un capitalisée mis à l'utilisateur faisant toute la méthode principale l'air très propre

class example(): 
     def say_it(self): 
      result = input('what do you wanna say to the world') 
      return result 

     def capitalize(self, words): 
      words = words.upper() 
      return words 


    def main(): 
     Ex = example() 
     res = Ex.say_it() 
     final_result = Ex.capitalize(res) 
     print(final_result) 

    if __name__ == '__main__': main() 

Le deuxième programme fait la même chose b il a moins de méthodes dans le corps de la classe et plus de méthodes dans la méthode principale, il appelle les méthodes de la classe et travaille avec les résultats retournés, puis l'instruction print finale est réellement émise dans la méthode principale il semble que la méthode principale pourrait devenir très confuse lorsque le programme se développe et se développe

Ma question est la suivante: quelle méthode évoluera mieux dans des situations réelles (c'est-à-dire plus lisibles, plus faciles à déboguer) où elles pourraient être comme 15 méthodes, sera-t-il préférable d'appeler une seule méthode qui fait toute la magie et obtient le résultat ou appelle les méthodes une par une dans la méthode principale, je me trouve parfois écrire des programmes de la première façon où j'appelle une méthode et la classe Tout le reste, y a-t-il une différence de vitesse entre ces deux programmes, laquelle sera la plus rapide?

+0

Je vote pour fermer cette question hors-sujet, car elle appartient à codereview.stackexchange.com. – chepner

+0

Le code ne fonctionne même pas, vous devez regarder attentivement le formatage en Python! Cela dit, le plus gros problème avec votre programme est à mon humble avis qu'il utilise des classes sans avoir besoin. Il y a un tas de lignes qui pourraient toutes être effacées en écrivant les trois lignes pertinentes l'une après l'autre. –

+0

@Ulrich Je dois avoir fait une erreur dans la deuxième manche, je l'ai testé avant de poster, et si vous lisez correctement ma question je demande s'il vaut mieux avoir une seule méthode qui démarre le programme entier et permet à la classe de faire travailler et imprimer le résultat vs appeler les méthodes une par une et travailler avec les valeurs retournées je ne voulais pas d'amélioration sur ce programme c'est juste un programme que je voulais utiliser comme référence à ma question – danidee

Répondre

2

Les fonctions doivent faire ce qu'elles disent. Il est déroutant d'avoir une fonction appelée capitalize() qui va et appelle une fonction pour imprimer et inviter et rassembler l'entrée.

Une fonction ne devrait pas simplement appeler une autre fonction et ne fournir aucune valeur. La fonction get_result() ne sert à rien. L'appel say_it() produit à la place le même résultat.

Votre classe doit conserver les données. C'est tout le point de l'objet. Main peut appeler les fonctions, mais il ne devrait pas avoir les données. Les mots auraient dû être stockés dans la classe.

Il n'y a pas de différence de performance perceptible entre qui appelle les fonctions.

+0

pardonnez-moi si le programme entier semble boiteux et inutile, j'essayais juste de démontrer s'il y a un avantage à tirer le programme entier avec une seule méthode au lieu de renvoyer des valeurs et d'utiliser plusieurs méthodes – danidee