When authoring OOP code, it is very common to have a file that only
contains one class, and nothing else.
Questo è comune in alcune lingue e può essere applicato, come in Java. Tuttavia, ha molto poco a che fare con OOP e più a che fare con il fatto che Java è un linguaggio OOP popolare. Scrivo / modifico diverse classi in un singolo file ogni giorno (sono un dev di Python), è una pratica abbastanza comune.
PEP8 says that all modules and all classes should have docstrings
outlining what they do. But in this case, the module is simply a
container for the class. If you put a description of the class, then
the information is duplicated
Sì, sarebbe duplicato se stai seguendo una regola di una classe per file. Hai alcune scelte:
-
Smetti di seguire la regola e consenti più classi per file (specialmente se la segui solo perché è una best practice percepita)
-
Inserisci la docstring nella classe e dimentica la docstring del livello del modulo. Se è solo una classe per modulo (e segui rigorosamente OOP), allora tutto sarà nella classe, quindi la docstring del modulo sarà abbastanza priva di significato. È perfettamente accettabile non seguire PEP8 alla lettera e, in generale, è meglio fare solo ciò che è meglio per la tua situazione particolare rispetto a seguire in modo cieco / dogmatico uno standard o una buona pratica.
HTH.
P.S. Se un linter si lamenta, e questo a sua volta sta rovinando le tue build, di solito ci sono opzioni per disattivare determinati requisiti PEP8. Ad esempio, ignorare E501 (lunghezza della linea superiore a 80 caratteri) è comune a quanto vedo che i team scelgono di ignorare (se il modulo pep8
è il tuo linter, puoi fare pep8 --ignore=E501
, ad esempio)