Pour cela j'aimerais cr=E9er un petit fichier "py" me permettant de
tirer au sort 7 num=E9ros sur 4 grilles.
Voila comment je vois les choses simples pour le moment, on affinera
ensuite.
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais
grille1, grille2, grille3 et grille4.
Pour grille1
Cr=E9er ma liste de num=E9ros (liste1)
Prendre 1 num=E9ro au hasard entre 1 et 49
R=E9p=E9ter "prendre 1 num=E9ro au hasard entre 1 et 49" 6 fois
Mettre les 7 num=E9ros dans liste1
Pour grille2
Idem grille1
Merci de m'aiguiller sans me donner la r=E9ponse, j'aimerais penser
comme vous, et ne pas recopier betement sans comprendre vos codes.
Question 1 : Est-ce que cr=E9er une classe grille est concevable est
correct, sachant que j'imagine ma classe comme un objet?
Question 2 : Dans ma fa=E7on de penser, est-ce correct ou non? Merci de
m'aider =E0 travailler sur python
On 10 sep, 17:08, Bruno Desthuilliers <bruno. wrote: (snip)
Dis voir... Qu'est-ce que tu dirais de lire un tutoriel Python avant d'aller plus loin ?
Je les lis, j'ai même acheté un bouquin,
Lequel, si ce n'est pas indiscret ?
mais je dois avouer que j'ai beaucoup de mal de comprendre.
Alors tu devrais peut-être commencer par poser des questions sur ce que tu a du mal à comprendre ?
Accessoirement, et puisque tu sembles débuter en programmation, je me permets de te recommander ceci:http://www.cifen.ulg.ac.be/inforef/swi/python.htm
J'ai le bouquin "Python par l'exemple" et le tuto que tu m'as présenté
je m'en sers régulièrement
Alors tu a deux plutôt bonnes références.
Bon, puisque je n'ai pas le bouquin d'Alex Martelli, on va s'appuyer sur le Swinnen. A tu lu les chapitres 11 et 12, et fait les exercices du chapitre 12 ? Si oui, poste donc tes questions sur ce que tu n'a pas compris dans ces chapitres, et éventuellement tes réponses pour les exercices. Sinon, tu commences par là, et on t'aide à partir de là.
On 10 sep, 17:08, Bruno Desthuilliers <bruno.
42.desthuilli...@wtf.websiteburo.oops.com> wrote:
(snip)
Dis voir... Qu'est-ce que tu dirais de lire un tutoriel Python avant
d'aller plus loin ?
Je les lis, j'ai même acheté un bouquin,
Lequel, si ce n'est pas indiscret ?
mais je dois avouer que j'ai
beaucoup de mal de comprendre.
Alors tu devrais peut-être commencer par poser des questions sur ce que
tu a du mal à comprendre ?
Accessoirement, et puisque tu sembles débuter en programmation, je me
permets de te recommander ceci:http://www.cifen.ulg.ac.be/inforef/swi/python.htm
J'ai le bouquin "Python par l'exemple" et le tuto que tu m'as présenté
je m'en sers régulièrement
Alors tu a deux plutôt bonnes références.
Bon, puisque je n'ai pas le bouquin d'Alex Martelli, on va s'appuyer sur
le Swinnen. A tu lu les chapitres 11 et 12, et fait les exercices du
chapitre 12 ? Si oui, poste donc tes questions sur ce que tu n'a pas
compris dans ces chapitres, et éventuellement tes réponses pour les
exercices. Sinon, tu commences par là, et on t'aide à partir de là.
On 10 sep, 17:08, Bruno Desthuilliers <bruno. wrote: (snip)
Dis voir... Qu'est-ce que tu dirais de lire un tutoriel Python avant d'aller plus loin ?
Je les lis, j'ai même acheté un bouquin,
Lequel, si ce n'est pas indiscret ?
mais je dois avouer que j'ai beaucoup de mal de comprendre.
Alors tu devrais peut-être commencer par poser des questions sur ce que tu a du mal à comprendre ?
Accessoirement, et puisque tu sembles débuter en programmation, je me permets de te recommander ceci:http://www.cifen.ulg.ac.be/inforef/swi/python.htm
J'ai le bouquin "Python par l'exemple" et le tuto que tu m'as présenté
je m'en sers régulièrement
Alors tu a deux plutôt bonnes références.
Bon, puisque je n'ai pas le bouquin d'Alex Martelli, on va s'appuyer sur le Swinnen. A tu lu les chapitres 11 et 12, et fait les exercices du chapitre 12 ? Si oui, poste donc tes questions sur ce que tu n'a pas compris dans ces chapitres, et éventuellement tes réponses pour les exercices. Sinon, tu commences par là, et on t'aide à partir de là.
Mihamina (R12y) Rakotomandimby
wrote:
Bonjour,
Bonjour,
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais grille1, grille2, grille3 et grille4.
Moi j'aurais plutot tendance à dire qu'il y a une seule classe "Grille", et 4 instances (grille_1, ..., grille_4) de cette classe.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
fred1599@gmail.com wrote:
Bonjour,
Bonjour,
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais
grille1, grille2, grille3 et grille4.
Moi j'aurais plutot tendance à dire qu'il y a une seule classe "Grille",
et 4 instances (grille_1, ..., grille_4) de cette classe.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je
te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section
"Naming Conventions") ou tu verras comment "ecrire correctement" le nom
d'une classe et d'une instance.
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais grille1, grille2, grille3 et grille4.
Moi j'aurais plutot tendance à dire qu'il y a une seule classe "Grille", et 4 instances (grille_1, ..., grille_4) de cette classe.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
http://lapagearegis.free.fr/guidedestyle.html -> Conventions de Nommage
Ok un truc du genre
class Grille : a=grille1.Grille [] #création de l'instance grille1 b=grille2.Grille [] c=grille3.Grille [] d=grille4.Grille []
Ici je n'ai pas besoin apparement d'argument pour construire ma classe il me semble?
Merci pour ton aide
jean-marc pouchoulon
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list): def __init__(self): i = 1 while i <=7: self.append(randint(0,49)) i += 1
...une question idiote ca marche mais pourquoi? je suis un peu surpris de ne pas devoir appeler le contructeur de list dans le contructeur de Grille. Désolé d'embrouiller la réponse.
bonne nuit
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je
te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section
"Naming Conventions") ou tu verras comment "ecrire correctement" le nom
d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions
http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list):
def __init__(self):
i = 1
while i <=7:
self.append(randint(0,49))
i += 1
...une question idiote ca marche mais pourquoi?
je suis un peu surpris de ne pas devoir appeler le contructeur de list
dans le contructeur de Grille.
Désolé d'embrouiller la réponse.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list): def __init__(self): i = 1 while i <=7: self.append(randint(0,49)) i += 1
...une question idiote ca marche mais pourquoi? je suis un peu surpris de ne pas devoir appeler le contructeur de list dans le contructeur de Grille. Désolé d'embrouiller la réponse.
bonne nuit
Bruno Desthuilliers
Bonjour,
J'aimerais apprendre la notion de classes.
Pour cela j'aimerais créer un petit fichier "py" me permettant de tirer au sort 7 numéros sur 4 grilles.
Voila comment je vois les choses simples pour le moment, on affinera ensuite.
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais grille1, grille2, grille3 et grille4.
AMHA, tu n'a pas compris le principe de base d'une classe. Tu n'a pas besoin de 4 classes différentes, une seule suffit. Regarde la class int (les nombres entiers) : c'est la même classes pour tous les entiers, pas une classe par nombre !-)
Pour grille1 Créer ma liste de numéros (liste1) Prendre 1 numéro au hasard entre 1 et 49 Répéter "prendre 1 numéro au hasard entre 1 et 49" 6 fois Mettre les 7 numéros dans liste1
Ce que tu décris là est un algorithme, pas un type. Avant toute autre chose, une classe décrit un type de données, c'est à dire la structure de données, la plage de valeurs, et les opérations possibles. Dans ton cas, ta classe Grille serait un ensemble de 7 nombres entier compris entre 1 et 49. Je te laisse définir les opérations qui te semblent appropriées, mais tu peux déjà songer à l'égalité (deux grilles sont elles identiques ?).
mes deux centimes...
Bonjour,
J'aimerais apprendre la notion de classes.
Pour cela j'aimerais créer un petit fichier "py" me permettant de
tirer au sort 7 numéros sur 4 grilles.
Voila comment je vois les choses simples pour le moment, on affinera
ensuite.
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais
grille1, grille2, grille3 et grille4.
AMHA, tu n'a pas compris le principe de base d'une classe. Tu n'a pas
besoin de 4 classes différentes, une seule suffit. Regarde la class int
(les nombres entiers) : c'est la même classes pour tous les entiers, pas
une classe par nombre !-)
Pour grille1
Créer ma liste de numéros (liste1)
Prendre 1 numéro au hasard entre 1 et 49
Répéter "prendre 1 numéro au hasard entre 1 et 49" 6 fois
Mettre les 7 numéros dans liste1
Ce que tu décris là est un algorithme, pas un type. Avant toute autre
chose, une classe décrit un type de données, c'est à dire la structure
de données, la plage de valeurs, et les opérations possibles. Dans ton
cas, ta classe Grille serait un ensemble de 7 nombres entier compris
entre 1 et 49. Je te laisse définir les opérations qui te semblent
appropriées, mais tu peux déjà songer à l'égalité (deux grilles sont
elles identiques ?).
Pour cela j'aimerais créer un petit fichier "py" me permettant de tirer au sort 7 numéros sur 4 grilles.
Voila comment je vois les choses simples pour le moment, on affinera ensuite.
J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais grille1, grille2, grille3 et grille4.
AMHA, tu n'a pas compris le principe de base d'une classe. Tu n'a pas besoin de 4 classes différentes, une seule suffit. Regarde la class int (les nombres entiers) : c'est la même classes pour tous les entiers, pas une classe par nombre !-)
Pour grille1 Créer ma liste de numéros (liste1) Prendre 1 numéro au hasard entre 1 et 49 Répéter "prendre 1 numéro au hasard entre 1 et 49" 6 fois Mettre les 7 numéros dans liste1
Ce que tu décris là est un algorithme, pas un type. Avant toute autre chose, une classe décrit un type de données, c'est à dire la structure de données, la plage de valeurs, et les opérations possibles. Dans ton cas, ta classe Grille serait un ensemble de 7 nombres entier compris entre 1 et 49. Je te laisse définir les opérations qui te semblent appropriées, mais tu peux déjà songer à l'égalité (deux grilles sont elles identiques ?).
mes deux centimes...
Bruno Desthuilliers
On 9 sep, 21:44, "Mihamina (R12y) Rakotomandimby" wrote:
class Grille : a=grille1.Grille [] #création de l'instance grille1
Dis voir... Qu'est-ce que tu dirais de lire un tutoriel Python avant d'aller plus loin ?
Bruno Desthuilliers
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list): def __init__(self): i = 1 while i <=7: self.append(randint(0,49)) i += 1
je suis un peu surpris de ne pas devoir appeler le contructeur de list dans le contructeur de Grille.
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Accessoirement, sous-classer liste n'est probablement pas la meilleur chose à faire ici. Une grille de loto n'est définitivement pas une liste (sémantique et invariants différents). Que tu utilise une liste pour implémenter ta grille, c'est ton choix (et une solution possible), mais ça ne devrait pas être visible.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code,
je te conseille ceci: http://www.python.org/dev/peps/pep-0008/
(section "Naming Conventions") ou tu verras comment "ecrire
correctement" le nom d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions
http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list):
def __init__(self):
i = 1
while i <=7:
self.append(randint(0,49))
i += 1
je suis un peu surpris de ne pas devoir appeler le contructeur de list
dans le contructeur de Grille.
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à
l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais
l'initialiseur. Le constructeur, c'est __new__().
Accessoirement, sous-classer liste n'est probablement pas la meilleur
chose à faire ici. Une grille de loto n'est définitivement pas une liste
(sémantique et invariants différents). Que tu utilise une liste pour
implémenter ta grille, c'est ton choix (et une solution possible), mais
ça ne devrait pas être visible.
Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance.
J'avais noté ca aussi pour les conventions http://conferences.oreillynet.com/presentations/os2007/os_goodger.pdf
Pour le faire du code avec une classe je ferais ca mais....
from random import randint
class Grille(list): def __init__(self): i = 1 while i <=7: self.append(randint(0,49)) i += 1
je suis un peu surpris de ne pas devoir appeler le contructeur de list dans le contructeur de Grille.
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Accessoirement, sous-classer liste n'est probablement pas la meilleur chose à faire ici. Une grille de loto n'est définitivement pas une liste (sémantique et invariants différents). Que tu utilise une liste pour implémenter ta grille, c'est ton choix (et une solution possible), mais ça ne devrait pas être visible.
jean-marc pouchoulon
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2" l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default value" that is returned when a missing key is requested:
Je pensais que le fait de déclarer une méthode suffisait à surcharger le constructeur de la classe parent.
class parent(object): ... def __init__(self):
... self.valeur = 1 ...
class enfant(parent): ... pass
...
e=enfant() e.valeur 1
class enfant(parent): ... def __init__(self):
... self.valeur=2 ...
e=enfant() e.valeur 2
je loupe quelque chose
jean-marc
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à
l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais
l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2"
l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default
value" that is returned when a missing key is requested:
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2" l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default value" that is returned when a missing key is requested:
Je pensais que le fait de déclarer une méthode suffisait à surcharger le constructeur de la classe parent.
class parent(object): ... def __init__(self):
... self.valeur = 1 ...
class enfant(parent): ... pass
...
e=enfant() e.valeur 1
class enfant(parent): ... def __init__(self):
... self.valeur=2 ...
e=enfant() e.valeur 2
je loupe quelque chose
jean-marc
Bruno Desthuilliers
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2" l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default value" that is returned when a missing key is requested:
Je pensais que le fait de déclarer une méthode suffisait à surcharger le constructeur de la classe parent.
<hs mode="plus ou moins"> Je sais que je suis un peu pénible avec ça, mais bien que je comprennes ce que tu veux dire, ta formulation est erronée, et AMHA, quand on ne pense pas avec les bons termes, on ne peut pas comprendre clairement le concept !-)
Donc, le fait de définir une fonction dans une classe[1] ne surcharge ni l'initialiseur, ni le constructeur de la classe parent *sauf* bien sûr si la fonction s'appelle __new__ ou __init__ !-)
[1] ou d'associer un nom à une fonction dans l'espace de nommage de la classe, ce qui revient au même... </hs>
En tout état de cause, en ce qui concerne les types 'conteneurs' builtins (classes codée en C...), le stockage du 'contenu' n'est pas fait dans un attribut défini dans l'initialiseur et accessible depuis Python.
Dans l'exemple ci-dessus, l'appel à dict.__init__ est totalement inutile - essaie par toi-même... Pour que cet appel serve à quelque chose, il aurait fallu gérer les différentes façons possibles d'initialiser un dict (séquence de paire clé/valeur, arguments nommés etc).
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à
l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais
l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2"
l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default
value" that is returned when a missing key is requested:
Je pensais que le fait de déclarer une méthode suffisait à surcharger le
constructeur de la classe parent.
<hs mode="plus ou moins">
Je sais que je suis un peu pénible avec ça, mais bien que je comprennes
ce que tu veux dire, ta formulation est erronée, et AMHA, quand on ne
pense pas avec les bons termes, on ne peut pas comprendre clairement le
concept !-)
Donc, le fait de définir une fonction dans une classe[1] ne surcharge ni
l'initialiseur, ni le constructeur de la classe parent *sauf* bien sûr
si la fonction s'appelle __new__ ou __init__ !-)
[1] ou d'associer un nom à une fonction dans l'espace de nommage de la
classe, ce qui revient au même...
</hs>
En tout état de cause, en ce qui concerne les types 'conteneurs'
builtins (classes codée en C...), le stockage du 'contenu' n'est pas
fait dans un attribut défini dans l'initialiseur et accessible depuis
Python.
Dans l'exemple ci-dessus, l'appel à dict.__init__ est totalement inutile
- essaie par toi-même... Pour que cet appel serve à quelque chose, il
aurait fallu gérer les différentes façons possibles d'initialiser un
dict (séquence de paire clé/valeur, arguments nommés etc).
Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__().
Ok c'est un abus de langage que tu as raison de souligner.
Quand je regarde "Unifying types and classes in Python 2.2" l'initialisateur de dict est bien appelé:
Here's an example of a simple dict subclass, which provides a "default value" that is returned when a missing key is requested:
Je pensais que le fait de déclarer une méthode suffisait à surcharger le constructeur de la classe parent.
<hs mode="plus ou moins"> Je sais que je suis un peu pénible avec ça, mais bien que je comprennes ce que tu veux dire, ta formulation est erronée, et AMHA, quand on ne pense pas avec les bons termes, on ne peut pas comprendre clairement le concept !-)
Donc, le fait de définir une fonction dans une classe[1] ne surcharge ni l'initialiseur, ni le constructeur de la classe parent *sauf* bien sûr si la fonction s'appelle __new__ ou __init__ !-)
[1] ou d'associer un nom à une fonction dans l'espace de nommage de la classe, ce qui revient au même... </hs>
En tout état de cause, en ce qui concerne les types 'conteneurs' builtins (classes codée en C...), le stockage du 'contenu' n'est pas fait dans un attribut défini dans l'initialiseur et accessible depuis Python.
Dans l'exemple ci-dessus, l'appel à dict.__init__ est totalement inutile - essaie par toi-même... Pour que cet appel serve à quelque chose, il aurait fallu gérer les différentes façons possibles d'initialiser un dict (séquence de paire clé/valeur, arguments nommés etc).