Moeten bestandsnamen van Python-klassen ook camelCased zijn?

Ik weet dat klassen in Python meestal in een kast worden geplaatst met camelCase.

Is het ook de normale conventie dat het bestand dat de klasse bevat ook camelCase’d heeft, vooral als het bestand alleen de klasse bevat?

Moet bijvoorbeeld klasse classNameook worden opgeslagen in className.pyin plaats van class_name.py?


Antwoord 1, autoriteit 100%

Het volgende antwoord is grotendeels afkomstig van dit antwoord.

Als je PEP 8 gaat volgen, moet je je houden aan namen in kleine letters, met optionele underscores.

Om de naamgevingsconventies van PEP 8 voor pakketten te citeren &amp ; modules:

Modules moeten korte namen in kleine letters hebben. Onderstrepingstekens kunnen worden gebruikt in de modulenaam als dit de leesbaarheid verbetert.

En voor lessen:

Klassenamen zouden normaal gesproken de CapWords-conventie moeten gebruiken.

Zie dit antwoordvoor het verschil tussen een module, klasse en pakket :

Een Python-module is gewoon een Python-bronbestand, dat klassen, functies en globale variabelen kan blootleggen.


Antwoord 2, autoriteit 16%

De officiële conventie is om alle kleine letters te gebruiken voor bestandsnamen (zoals anderen al hebben aangegeven). De reden is echter niet genoemd…

Aangezien Python platformoverschrijdend werkt (en het is gebruikelijk om het op die manier te gebruiken), maar bestandssystemen verschillen in het gebruik van hoofdletters, is het beter om alternatieve gevallen gewoon te elimineren. In Linux is het bijvoorbeeld mogelijk om MyClass.py en myclass.py in dezelfde directory te hebben. Dat is niet zo in Windows!

Over een verwante opmerking, als je MyClass.py en myclass.py in een git-repo hebt, of zelfs maar de hoofdletters in hetzelfde bestand verandert, kan git funky doen als je duwt/trekt over Linux en Windows.

En hoewel nauwelijks over het onderwerp, maar in dezelfde geest, heeft SQL dezelfde problemen waarbij verschillende standaarden en configuraties hoofdletters op tabelnamen al dan niet toestaan.

Persoonlijk vind ik het prettiger om TitleCasing / camelCasing zelfs op bestandsnamen te lezen, maar als je iets doet dat cross-platform kan werken, is het het veiligst om dat niet te doen.


Antwoord 3, autoriteit 8%

Mijn vraag is, is het ook de normale conventie om het bestand te hebben dat
bevat de klasse ook camelCase’d vooral als het bestand alleen
bevat de klas

Kort antwoord: Nee.

Langer antwoord: moet allemaal in kleine letters en onderstrepingstekens zijn als dat nodig is.

Van PEP8 “Pakket- en modulenamen”:

Modules moeten korte namen in kleine letters hebben. Onderstrepingstekens kunnen zijn
gebruikt in de modulenaam als dit de leesbaarheid verbetert. Python-pakketten
moeten ook korte namen hebben die alleen in kleine letters zijn, hoewel het gebruik van
onderstrepingstekens wordt afgeraden.

Als je niet zeker weet wat een moduleis:

Een module is een bestand dat Python-definities en -statements bevat. De
bestandsnaam is de modulenaam met het achtervoegsel .py toegevoegd.


Antwoord 4, autoriteit 7%

Er is een verschil in de naamgevingsconventie van de klassenaam en het bestand dat deze klasse bevat. Dit misverstand kan afkomstig zijn van talen zoals java, waar het gebruikelijk is om één bestand per klas te hebben.

In python kun je meerdere klassen per module hebben (een eenvoudig .py-bestand). De klassen in deze module/het bestand moeten worden aangeroepen volgens de naamgevingsconventie voor klassen: Klassenamen moeten normaal gesproken de CapWords-conventie gebruiken.
Het bestand dat deze klassen bevat, moet de naamgevingsconventie van modules volgen: Modules moeten korte namen hebben die alleen in kleine letters zijn. Onderstrepingstekens kunnen worden gebruikt in de modulenaam als dit de leesbaarheid verbetert.

=> CamelCase moet in het bestand camelcase.py (of camel_case.py indien nodig)

Other episodes