2010-04-20 4 views
2

Existe-t-il un moyen de partager les en-têtes en python? J'importe les mêmes choses dans différents contrôleurs dans les pylônes.Partager les en-têtes parmi les fichiers en python?

+2

Vous devrez élaborer un peu sur ce que vous voulez partager. Python lui-même n'a pas d'en-tête comme d'autres langues. Vous mentionnez Pylons, cependant. La question concerne-t-elle réellement un système de modèles? –

+0

non, pas un fichier "en-têtes", mais comme importer une importation b importation c – Timmy

Répondre

3

Essayez de mettre le code commun dans le fichier __init__.py. Comme dans here: "Le fichier __init__.py est généralement vide, mais peut être utilisé pour exporter des parties sélectionnées du paquet sous des noms plus pratiques, tenir des fonctions pratiques, etc."

1

Vous pouvez mettre les choses « en-tête » dans un module de leur propre et, partout où vous en avez besoin, faire

from myheadermodule import * 
+0

Sauf que cette forme d'importation est généralement considérée comme une mauvaise pratique, pour de bonnes raisons. Si vous êtes nouveau sur Python, vous risquez de vous retrouver en difficulté à l'utiliser. Si la structure de votre programme est telle que vous en avez besoin, vous pouvez probablement faire mieux en revisitant cette structure et en l'améliorant. –

+0

@Peter: Je ne dis pas que les modules normaux devraient généralement être importés comme ça. Je dis que cela résoudrait le problème spécifique décrit, que j'ai compris comme "comment puis-je éviter de copier-coller les mêmes instructions" import "dans beaucoup de mes modules". Je ne pense pas que les raisons normales contre 'import * 's'appliqueraient dans ce cas. Cette interprétation de la question pourrait cependant être erronée, car je ne vois pas vraiment comment la réponse acceptée résoudrait ce problème. – sth

+0

vous avez raison de dire que votre réponse répond directement à la question. Je préviens juste le PO qu'il devrait chercher une alternative à l'utilisation de cette approche. Ce n'est pas nécessaire dans un système bien conçu. Une variation simple qui serait beaucoup mieux serait d'utiliser 'import myheadermodule comme mh' et d'accéder ensuite à tout ce qui est dedans comme' mh.foo' et 'mh.bar'. N'hésitez pas à incorporer l'avertissement et le conseil dans votre réponse, si vous êtes d'accord. –

Questions connexes