Eu tenho um módulo cujo objetivo é definir uma classe chamada "nib". (e algumas classes relacionadas também.) Como devo chamar o próprio módulo? "bico"? "nibmodule"? Algo mais?
Eu tenho um módulo cujo objetivo é definir uma classe chamada "nib". (e algumas classes relacionadas também.) Como devo chamar o próprio módulo? "bico"? "nibmodule"? Algo mais?
Respostas:
Apenas nib. Nomeie a classe Nib, com N maiúsculo. Para obter mais informações sobre convenções de nomenclatura e outros conselhos de estilo, consulte PEP 8 , o guia de estilo do Python.
Client
e, compreensivelmente, muitas vezes eu criaria ocorrências dela que gostaria de chamar client
. Mas, de acordo com sua convenção, o nome do módulo seria client
e, portanto, sempre teria que nomear minhas instâncias com algo não natural como client_instance
. O que você acha desse problema?
Client
, então ela entraria em conflito com o nome da classe Client
. Uma vez que existem apenas 3 possível nomeação variantes ( client
, Client
ou CLIENT
) sempre haverá um confronto entre duas das instâncias, classes, módulos ou constantes. Acredito que haja menos vezes que você nomeie seu módulo da mesma forma que uma instância ou constante do que a classe e, portanto, é a melhor convenção de nomenclatura das outras possibilidades. Também tornará a importação de módulos mais legível, já que geralmente você importa classes e constantes em vez de variáveis.
Eu o chamaria de nib.py. E eu também nomearia a classe Nib.
Em um projeto python maior no qual estou trabalhando, temos muitos módulos que definem basicamente uma classe importante. As classes são nomeadas começando com uma letra maiúscula. Os módulos são nomeados como a classe em letras minúsculas. Isso leva a importações como as seguintes:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
É um pouco como emular o método Java. Uma aula por arquivo. Mas com a flexibilidade adicional, você pode sempre adicionar outra classe a um único arquivo, se fizer sentido.
Sei que minha solução não é muito popular do ponto de vista pythônico, mas prefiro usar a abordagem Java de um módulo-> uma classe, com o módulo nomeado como a classe. Eu entendo a razão por trás do estilo python, mas não gosto muito de ter um arquivo muito grande contendo muitas classes. Acho difícil navegar, apesar de dobrar.
Outra razão é o controle de versão: ter um arquivo grande significa que seus commits tendem a se concentrar naquele arquivo. Isso pode potencialmente levar a uma maior quantidade de conflitos a serem resolvidos. Você também perde as informações de log adicionais de que seu commit modifica arquivos específicos (portanto, envolvendo classes específicas). Em vez disso, você vê uma modificação no arquivo do módulo, com apenas o comentário de confirmação para entender qual modificação foi feita.
Resumindo, se você prefere a filosofia python, siga as sugestões dos outros posts. Se você preferir a filosofia semelhante ao java, crie um Nib.py contendo a classe Nib.
spyder
ou um editor semelhante para ver um resumo de suas classes para auxiliar a navegação e dois painéis com o mesmo arquivo aberto em ambos. Além disso, leia PEP8. Python é para escrever Python e Java para Java, mas Python não é para escrever Java.
bico está bem. Em caso de dúvida, consulte o guia de estilo do Python.
Do PEP 8 :
Nomes de pacotes e módulos Os módulos devem ter nomes curtos, todos em minúsculas. Sublinhados podem ser usados no nome do módulo se melhorar a legibilidade. Os pacotes Python também devem ter nomes curtos, todos em minúsculas, embora o uso de sublinhados seja desencorajado.
Uma vez que os nomes dos módulos são mapeados para os nomes dos arquivos e alguns sistemas de arquivos não diferenciam maiúsculas de minúsculas e truncam os nomes longos, é importante que os nomes dos módulos sejam bem curtos - isso não será um problema no Unix, mas pode ser um problema quando o código é transportado para versões mais antigas do Mac ou Windows, ou DOS.
Quando um módulo de extensão escrito em C ou C ++ tem um módulo Python que o acompanha que fornece uma interface de nível superior (por exemplo, mais orientada a objetos), o módulo C / C ++ tem um sublinhado à esquerda (por exemplo, _socket).
Do PEP-8: Nomes de pacotes e módulos :
Os módulos devem ter nomes curtos, todos em minúsculas. Sublinhados podem ser usados no nome do módulo se melhorar a legibilidade.
Os pacotes Python também devem ter nomes curtos, todos em minúsculas, embora o uso de sublinhados seja desencorajado.
Quando um módulo de extensão escrito em C ou C ++ tem um módulo Python acompanhante que fornece uma interface de nível superior (por exemplo, mais orientada a objetos), o módulo C / C ++ tem um sublinhado inicial (por exemplo, _socket).
O módulo foo em python seria o equivalente a um arquivo de classe Foo em Java
ou
O módulo foobar em python seria o equivalente a um arquivo de classe FooBar em Java