2010-10-27 15 views

Répondre

4

La majuscule des noms de classe est sans importance, elle ne signifie rien. Sauf que Python a parfois grandi organiquement et la bibliothèque standard n'a pas la même sensation homogène que d'autres grandes bibliothèques telles que l'API Win32 ou la bibliothèque standard Java.

+0

Il faut noter qu'il y avait un effort en Python 3, pour standardiser les noms des modules et des classes intégrés. http://www.python.org/dev/peps/pep-3108/#pep-8-violations-done –

2

Habituellement, c'est conforme à un bon style, les classes sont capitalisées.

def MyClass (object): 
    pass 

my_instance = MyClass() 

comme ceci.

Vous devriez lire ce document à ce sujet: http://www.python.org/dev/peps/pep-0008/

+0

Ensuite, la question est: pourquoi ce n'est pas le cas de 'defaultdict'? –

+0

Uhm. Bonne question. :-) Je pense que c'est peut être cohérent avec sa classe parente, dict. dict est l'un des types intégrés et, en tant que tel, minuscule (str, int, ...). Peut-être que les auteurs voulaient garder ouverte l'option d'introduire defaultdict dans l'espace de noms intégré, à côté de dict. Dans ce cas, "enfreindre les règles" (voir PEP8) aurait du sens. –

+0

'OrderedDict' est également une sous-classe de' dict', et il est correctement mis en majuscule. Pour convertir 'defaultdict' en une classe intégrée, pourquoi ne pas convertir la capitalisation en même temps? De ce fait, toute nouvelle classe dans les bibliothèques Python devrait être écrite en minuscule, au cas où elle deviendrait un jour intégrée. – max

2

defaultdict est écrit en C et pep8 ne sont pas applicables, dans d'autre part OrderDict est écrit en python,

vous pouvez lire le code C norme pour la mise en œuvre de C de Python ici: PEP 7

référence: code source python2.7

defaultdict : Modules/_collectionsmodule.c 
OrderDict : Lib/collections.py 
+0

Pourquoi la classe C ne peut-elle pas être exposée à la bibliothèque Python dans un cas capitalisé? C est sensible à la casse. Qu'est-ce que je rate? – max

+0

@max: chaque langage a sa norme de codage, on ne peut pas coder en C en utilisant la norme python pep8 droite? voici la norme pour l'extension C: http://www.python.org/dev/peps/pep-0007/ – mouad

+0

Je suis d'accord en général ... mais lors de l'écriture d'une fonction en C dans le seul but de fournir une fonction de bibliothèque pour la bibliothèque standard de Python, je suivrais le style Python pour le nom de la fonction – max