Avertissement: C'est peut-être une question assez subjective sans réponse correcte mais j'apprécierais tout commentaire sur les meilleures pratiques et la conception de programme. Alors voilà:La façon la plus «pythonique» de gérer la surcharge
J'écris une bibliothèque où les fichiers texte sont lus dans Text
objets. Maintenant, ceux-ci peuvent être initialisés avec une liste de noms de fichiers ou directement avec une liste d'objets Sentence
. Je me demande quelle est la meilleure façon de faire cela, car si je comprends bien, Python ne supporte pas directement la surcharge de méthodes. Un exemple que j'ai trouvé dans Scikit-Learn
feature extraction module passe simplement le type de l'entrée comme un argument lors de l'initialisation de l'objet. Je suppose qu'une fois que ce paramètre est défini, il est juste une question de traiter les différents cas en interne:
if input == 'filename':
# glob and read files
elif input == 'content':
# do something else
Bien que ce soit facile à mettre en œuvre, il ne ressemble pas à une solution très élégante. Je me demande donc s'il y a une meilleure façon de gérer plusieurs types d'intrants pour initialiser une classe que je néglige.
Certainement pas une réponse, et certainement pas pythonique, mais vous pouvez (j'ai) mis en œuvre [méthode de style de signature de type surcharge] (http://stackoverflow.com/a/11379721/1142167) en python pour le plaisir. –