Voici mon soucis:
J'ai pour habitude de faire une classe par fichier( habitude issu du Java).
Imaginons que je veuille faire une classe avion.
J'ai donc une classe avion dans un fichier avion.py
ex: avion.py
class avion :
pass
dans mon programme je peux taper un truc du genre:
import avion
mon_avion = avion.avion()
et même
avion = avion.avion() !!!
et ça marche ( au moins un certain temps)
ça fait beaucoup d'avion et c'est pas très lisible.
comme j'ai fait du Java ma classe s'appelle en réalité Avion ce qui
limite un peu la confusion.
mon_avion = avion.Avion()
si j'utilise
from avion import *
je n'ai plus de problème
je peut faire
mon_avion = avion.Avion()
et même
avion = Avion()
par contre il parait que ce n'est pas bien (!?)
sinon je peux aussi mettre un majuscule sur le fichier pour faire un
import Avion
autre question: est ce que je peux empêcher de réaffecter une variable:
dans ce cas
avion = avion.avion()
qui écrase le module, enverrais une exception.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bruno.desthuilliers
On 26 fév, 12:45, JBB wrote:
Bonjour,
Voici mon soucis: J'ai pour habitude de faire une classe par fichier( habitude issu du Java ).
Mais qu'il n'est pas forcément bon de transposer à Python. D'une part, parce que Python ne force pas à tout mettre dans des classes, d'autre part parce que les classes Python tendent à être assez courtes, et enfin parce qu'en Python, un fichier source == 1 module. Bref, n'hésite pas à mettre plusieurs classes (et fonctions, constantes et autres) dans un même module.
Imaginons que je veuille faire une classe avion. J'ai donc une classe avion dans un fichier avion.py
ex: avion.py class avion :
class Avion(object):
pass
dans mon programme je peux taper un truc du genre: import avion mon_avion = avion.avion() et même avion = avion.avion() !!! et ça marche ( au moins un certain temps)
ce dernier va écraser le binding précédent du nom 'avion' sur le module avion.py. Tu ne pourra donc plus accéder au module.
ça fait beaucoup d'avion et c'est pas très lisible.
Non.
comme j'ai fait du Java ma classe s'appelle en réalité Avion ce qui limite un peu la confusion. mon_avion = avion.Avion()
si j'utilise from avion import * je n'ai plus de problème
Tu va très vite en avoir d'autres.
je peut faire mon_avion = avion.Avion() et même avion = Avion() par contre il parait que ce n'est pas bien (!?)
from <package> import * est très pratique dans une session interactive, mais à éviter dans du code sérieux - ne serait-ce que pour la lisibilité. Imagine :
# badcode.py from pack1 import * from pack2 import * from pack3 import * from pack4 import *
truc = UnTruc() fait_ci(truc) #
Où sont définis UnTruc et fait_ci ? > Merci pour vous idées.
sinon je peux aussi mettre un majuscule sur le fichier pour faire un import Avion
Sinon, tu peux aussi faire tout simplement:
from avion import Avion
avion = Avion()
autre question: est ce que je peux empêcher de réaffecter une variabl e: dans ce cas avion = avion.avion() qui écrase le module, enverrais une exception.
Non. Si tu veux écraser un nom de module, c'est ton affaire - après tout, tu peux avoir de très bonnes raisons pour ça.
Apprendre un langage, ce n'est pas seulement apprendre la syntaxe - c'est surtout et avant tout apprendre les idiomes et la 'philosopie' du langage. De ce point de vue, Java et Python sont *très* différents. Essayer d'écrire du Java en Python ne peut mener qu'à un bien inutile sentiment de frustration. Si ce n'est pas déjà fait, je te recommande cette lecture: http://dirtsimple.org/2004/12/python-is-not-java.html
Mes deux centimes
On 26 fév, 12:45, JBB <nos...@nospam.com> wrote:
Bonjour,
Voici mon soucis:
J'ai pour habitude de faire une classe par fichier( habitude issu du Java ).
Mais qu'il n'est pas forcément bon de transposer à Python. D'une part,
parce que Python ne force pas à tout mettre dans des classes, d'autre
part parce que les classes Python tendent à être assez courtes, et
enfin parce qu'en Python, un fichier source == 1 module. Bref,
n'hésite pas à mettre plusieurs classes (et fonctions, constantes et
autres) dans un même module.
Imaginons que je veuille faire une classe avion.
J'ai donc une classe avion dans un fichier avion.py
ex: avion.py
class avion :
class Avion(object):
pass
dans mon programme je peux taper un truc du genre:
import avion
mon_avion = avion.avion()
et même
avion = avion.avion() !!!
et ça marche ( au moins un certain temps)
ce dernier va écraser le binding précédent du nom 'avion' sur le
module avion.py. Tu ne pourra donc plus accéder au module.
ça fait beaucoup d'avion et c'est pas très lisible.
Non.
comme j'ai fait du Java ma classe s'appelle en réalité Avion ce qui
limite un peu la confusion.
mon_avion = avion.Avion()
si j'utilise
from avion import *
je n'ai plus de problème
Tu va très vite en avoir d'autres.
je peut faire
mon_avion = avion.Avion()
et même
avion = Avion()
par contre il parait que ce n'est pas bien (!?)
from <package> import * est très pratique dans une session
interactive, mais à éviter dans du code sérieux - ne serait-ce que
pour la lisibilité. Imagine :
# badcode.py
from pack1 import *
from pack2 import *
from pack3 import *
from pack4 import *
truc = UnTruc()
fait_ci(truc)
#
Où sont définis UnTruc et fait_ci ? > Merci pour vous idées.
sinon je peux aussi mettre un majuscule sur le fichier pour faire un
import Avion
Sinon, tu peux aussi faire tout simplement:
from avion import Avion
avion = Avion()
autre question: est ce que je peux empêcher de réaffecter une variabl e:
dans ce cas
avion = avion.avion()
qui écrase le module, enverrais une exception.
Non. Si tu veux écraser un nom de module, c'est ton affaire - après
tout, tu peux avoir de très bonnes raisons pour ça.
Apprendre un langage, ce n'est pas seulement apprendre la syntaxe -
c'est surtout et avant tout apprendre les idiomes et la 'philosopie'
du langage. De ce point de vue, Java et Python sont *très* différents.
Essayer d'écrire du Java en Python ne peut mener qu'à un bien inutile
sentiment de frustration. Si ce n'est pas déjà fait, je te recommande
cette lecture:
http://dirtsimple.org/2004/12/python-is-not-java.html
Voici mon soucis: J'ai pour habitude de faire une classe par fichier( habitude issu du Java ).
Mais qu'il n'est pas forcément bon de transposer à Python. D'une part, parce que Python ne force pas à tout mettre dans des classes, d'autre part parce que les classes Python tendent à être assez courtes, et enfin parce qu'en Python, un fichier source == 1 module. Bref, n'hésite pas à mettre plusieurs classes (et fonctions, constantes et autres) dans un même module.
Imaginons que je veuille faire une classe avion. J'ai donc une classe avion dans un fichier avion.py
ex: avion.py class avion :
class Avion(object):
pass
dans mon programme je peux taper un truc du genre: import avion mon_avion = avion.avion() et même avion = avion.avion() !!! et ça marche ( au moins un certain temps)
ce dernier va écraser le binding précédent du nom 'avion' sur le module avion.py. Tu ne pourra donc plus accéder au module.
ça fait beaucoup d'avion et c'est pas très lisible.
Non.
comme j'ai fait du Java ma classe s'appelle en réalité Avion ce qui limite un peu la confusion. mon_avion = avion.Avion()
si j'utilise from avion import * je n'ai plus de problème
Tu va très vite en avoir d'autres.
je peut faire mon_avion = avion.Avion() et même avion = Avion() par contre il parait que ce n'est pas bien (!?)
from <package> import * est très pratique dans une session interactive, mais à éviter dans du code sérieux - ne serait-ce que pour la lisibilité. Imagine :
# badcode.py from pack1 import * from pack2 import * from pack3 import * from pack4 import *
truc = UnTruc() fait_ci(truc) #
Où sont définis UnTruc et fait_ci ? > Merci pour vous idées.
sinon je peux aussi mettre un majuscule sur le fichier pour faire un import Avion
Sinon, tu peux aussi faire tout simplement:
from avion import Avion
avion = Avion()
autre question: est ce que je peux empêcher de réaffecter une variabl e: dans ce cas avion = avion.avion() qui écrase le module, enverrais une exception.
Non. Si tu veux écraser un nom de module, c'est ton affaire - après tout, tu peux avoir de très bonnes raisons pour ça.
Apprendre un langage, ce n'est pas seulement apprendre la syntaxe - c'est surtout et avant tout apprendre les idiomes et la 'philosopie' du langage. De ce point de vue, Java et Python sont *très* différents. Essayer d'écrire du Java en Python ne peut mener qu'à un bien inutile sentiment de frustration. Si ce n'est pas déjà fait, je te recommande cette lecture: http://dirtsimple.org/2004/12/python-is-not-java.html
Mes deux centimes
William Dode
On 26-02-2007, JBB wrote:
Bonjour,
Voici mon soucis: J'ai pour habitude de faire une classe par fichier( habitude issu du Java). Imaginons que je veuille faire une classe avion. J'ai donc une classe avion dans un fichier avion.py
ex: avion.py class avion : pass
Une idée
module/fichier aeroport.py
dedans
class Avion:... class Pilote:...
ainsi tu pourras faire
from aeroport import Avion, Pilote
puis mon_avion = Avion() mon_pilote = Pilote()
-- William Dodé - http://flibuste.net Développeur informatique indépendant
On 26-02-2007, JBB wrote:
Bonjour,
Voici mon soucis:
J'ai pour habitude de faire une classe par fichier( habitude issu du Java).
Imaginons que je veuille faire une classe avion.
J'ai donc une classe avion dans un fichier avion.py
ex: avion.py
class avion :
pass
Une idée
module/fichier aeroport.py
dedans
class Avion:...
class Pilote:...
ainsi tu pourras faire
from aeroport import Avion, Pilote
puis
mon_avion = Avion()
mon_pilote = Pilote()
--
William Dodé - http://flibuste.net
Développeur informatique indépendant
Voici mon soucis: J'ai pour habitude de faire une classe par fichier( habitude issu du Java). Imaginons que je veuille faire une classe avion. J'ai donc une classe avion dans un fichier avion.py
ex: avion.py class avion : pass
Une idée
module/fichier aeroport.py
dedans
class Avion:... class Pilote:...
ainsi tu pourras faire
from aeroport import Avion, Pilote
puis mon_avion = Avion() mon_pilote = Pilote()
-- William Dodé - http://flibuste.net Développeur informatique indépendant