12
votes

Conventions de nommage Python pour les interfaces et les classes abstraites?

Quelle est la convention pour nommer des interfaces et des classes abstraites en python? Pep 8 ne discute pas de cela. Par exemple, en Java, les interfaces sont souvent nommées par un préfixe "i". Dans PHP (avant les espaces de noms), les classes abstraites sont généralement nommées avec un suffixe "_AbRact".

(Je me rends compte que les pythonistes ne sont pas désireux d'interfaces, et c'est peut-être la raison pour laquelle je ne trouve pas beaucoup de consensus sur ce sujet. Mais l'utilisation d'interfaces et de classes abstraites n'est pas ma question.)


4 commentaires

Ils sont les mêmes que des classes typiques. Autant que je sache, il n'y a aucune règle supplémentaire pour cela.


Je suis programmée en Python depuis 2,2 ans et je n'ai pas vu de conventions largement utilisées pour l'une ou l'autre.


Dupliquer possible: Stackoverflow.com/Questtions/7809287/...


J'utilise i pour l'interface comme C ++: iPerson et suffixe abstrait: personnage de personnage


3 Réponses :


11
votes

Je ne suis pas au courant d'aucune normes communautaires à cet égard à cet égard, à cet égard de Pep8 , qui ne résout pas cela spécifiquement.

Je suggérerais de faire tout ce que votre équipe est le plus à l'aise, mais surtout soyez cohérent .


0 commentaires

8
votes

Je pense nommer une interface avec un préfixe i est parfaitement acceptable.

par exemple: xxx

Quelques années, j'ai utilisé zope Interfaces. J'ai remarqué que la plupart des codesbases ont utilisé cette convention. Notre équipe a fait aussi.

Nous avons préféré VIOO VS. FOOININTERFACE ou IFOOINTORFACE


0 commentaires

7
votes

Je regarderais vers la tour numéro (de numéros < / a>), la collection ABCS (de collections.abc ), ou l'autre core ABCS (telle que importateurLib.abc ) pour le moyen "pythonique" de faire cela.

Le consensus de ceci est de simplement les nommer tel quel, et laissez la compréhension humaine les reconnaître comme abstrait.


1 commentaires

Les bibliothèques de python plus anciennes n'ont pas suivi Pep8. En regardant les plus récentes bibliothèques telles que Asyncio One voit des cours comme AbstractrenteventLoop, baseprotocol (classe de base commune pour interfaces de protocole), protocole (interface pour protocole de flux). Donc, pas de préfixe 'i'.