2010-10-27 3 views

ответ

4

Капитализация имен классов не имеет значения, это ничего не значит. За исключением того, что Python иногда вырастает органично, а стандартная библиотека не имеет такого же однородного ощущения, как другие большие библиотеки, такие как Win32 API или стандартная библиотека Java.

+0

Следует отметить, что в Python 3 есть усилия, чтобы стандартизировать имена встроенных модулей и классов. http://www.python.org/dev/peps/pep-3108/#pep-8-violations-done –

2

Обычно, то есть в соответствии с хорошим стилем, классы капитализируются.

def MyClass (object): 
    pass 

my_instance = MyClass() 

вот так.

Вы должны прочитать этот документ об этом: http://www.python.org/dev/peps/pep-0008/

+0

Тогда возникает вопрос, почему это не относится к 'defaultdict'? –

+0

Uhm. Хороший вопрос. :-) Я думаю, что это может быть совместимо с его родительским классом, dict. dict - один из встроенных типов и, как таковой, строчный (str, int, ...). Может быть, авторы хотели оставить открытым возможность ввести defaultdict в встроенное пространство имен вместе с dict. В этом случае ** нарушение правил ** (см. PEP8) имеет смысл. –

+0

'OrderedDict' также является подклассом' dict', и он капитализируется должным образом. Что касается преобразования 'defaultdict' в встроенный класс, почему бы не преобразовать капитализацию в одно и то же время? В этом токене любой новый класс в библиотеках Python должен быть написан в нижнем регистре, если он однажды может стать встроенным. – max

2

defaultdict написана на C и pep8 не применяются, в другой руке OrderDict написан на питоне,

вы можете прочитать код C норму для реализации C Питона здесь: PEP 7

ссылка: исходный код python2.7

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

Почему класс C не может быть открыт для библиотеки Python в заглавных буквах? C чувствителен к регистру. Что мне не хватает? – max

+0

@max: у каждого языка есть своя норма кодирования, мы не можем закодировать в C, используя python norm pep8 вправо? вот норма для расширения C: http://www.python.org/dev/peps/pep-0007/ – mouad

+0

Я согласен в целом ... но при написании функции в C с единственной целью предоставления библиотечной функции для стандартной библиотеки Python я буду следовать стилю Python для имени функции – max