Comment savoir si un objet Python est une chaîne de caractères?

Comment puis-je vérifier si un objet Python est une chaîne de caractères (réguliers ou Unicode)?

  • Ce que Jason se référant à l'est du duck-typing (si il charlatans comme un canard, c'est probablement un canard). En Python, vous avez souvent "laissez vos code du travail" sur n'importe quelle chaîne, comme objet, sans vérifier si c'est une chaîne ou une chaîne de sous-classe. Pour plus d'info, voir: docs.python.org/glossary.html#term-duck-typing
  • C'est ce que j'aime à propos de la SORTE. J'ai l'habitude de poser une question, il ne répond pas, les gens me disent que je ne devrais pas faire ça de toute façon et pourquoi, et je grandir en tant que programmeur. =)
  • +1: tout Simplement parce que la réponse est rarement nécessaire, ne signifie pas que la question n'est pas valide. Même si je pense que c'est génial d'avoir une attention ici, je ne pense pas qu'il mérite de la rétrogradation de la question.
  • C'est peut-être le plus de l'usage légitime de la vérification du type en Python. Les chaînes sont itératif, afin de les distinguer des listes de toute autre manière est une mauvaise idée.
  • Il y a certainement des cas où il est nécessaire de distinguer les chaînes à partir d'autres iterables. Par exemple, voir le code source pour PrettyPrinter dans le pprint module.
  • “Si ça ressemble à un canard et les charlatans comme un canard, il doit etre un canard.”
  • Je pense que le duck-typing est destinée à travailler avec le polymorphisme. Certaines personnes ont une réaction réflexe à l'encontre de TOUTES python vérification de type. Ben du lien n'a pas vraiment parler contre des choses où les types ont fondamentalement différents comportements. Mon interprétation est que le duck-typing est destinée à faire confiance à la Principe de Substitution de Liskov
  • Les chaînes ne sont pas seulement iterables, ils sont iterables de chaînes de caractères. Les distinguant des autres iterables de chaîne sans "triche" est presque impossible. Mais ensuite, il y a stringlike et la triche code des pauses.
  • Depuis beaucoup de nouvelles personnes vont probablement lu cela: d'abord, assurez-vous que vous n'avez vraiment vérifier. Ma réponse pourrait donner quelques idées sur la façon d'éviter la case.
  • Voir aussi stackoverflow.com/questions/4843173/...

InformationsquelleAutor Matt S. | 2009-08-19