web-dev-qa-db-fra.com

Les classes sont-elles dans Python dans différents fichiers?

Tout comme Java (ou php), je suis habitué à séparer les classes en fichiers.
Est-ce la même chose en Python? plus, comment dois-je nommer le fichier?
Minuscule comme classname.py ou identique comme ClassName.py?
Dois-je faire quelque chose de spécial si je veux créer un objet à partir de cette classe ou le fait qu'il soit dans le même "projet" (netbeans) permet-il de créer un objet à partir de lui?

32
Asaf

En Python, un fichier est appelé module . Un module peut être composé de plusieurs classes ou fonctions.

Comme Python n'est pas pas un OO uniquement, cela n'a pas de sens) ont une règle qui dit, un fichier ne doit contenir qu'une seule classe.

Un fichier (module) doit contenir des classes/fonctions qui vont ensemble, c'est-à-dire fournir des fonctionnalités similaires ou dépendre les unes des autres.
Bien sûr, vous ne devez pas exagérer cela. La lisibilité souffre vraiment si votre module comprend trop de classes ou de fonctions. Ensuite, il est probablement temps de regrouper la fonctionnalité dans différents modules et de créer packages .


Pour les conventions de dénomination, vous voudrez peut-être lire PEP 8 mais en bref:

Noms de classe

Presque sans exception, les noms de classe utilisent la convention CapWords. Les classes à usage interne ont également un trait de soulignement.

et

Noms des packages et modules

Les modules doivent avoir des noms courts tout en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module s'il améliore la lisibilité. Python doivent également avoir des noms courts tout en minuscules, bien que l'utilisation de soulignements soit déconseillée.

Étant donné que les noms de modules sont mappés sur des noms de fichiers et que certains systèmes de fichiers ne respectent pas la casse et tronquent les noms longs, il est important que les noms de modules soient choisis pour être assez courts - ce ne sera pas un problème sur Unix, mais ce peut être un problème lorsque le code est transporté vers d'anciennes versions Mac ou Windows ou DOS.


Pour instancier un objet, vous devez importer la classe dans votre fichier. Par exemple

>>> from mymodule import MyClass
>>> obj = MyClass()

ou

>>> import mymodule
>>> obj = mymodule.MyClass()

ou

>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()

Vous demandez des trucs de base essentiels, donc je vous recommande de lire le tutoriel .

53
Felix Kling

Non, vous pouvez définir plusieurs classes (et fonctions, etc.) dans un seul fichier. Un fichier est également appelé module.

Pour utiliser les classes/fonctions définies dans le module/fichier, vous devrez import le module/fichier.

3
Chris Henry