J'instancie des classes que j'ajoute =E0 une liste.
Jusque la pas de probl=E8me.
Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir v=E9rifier si
il est d=E9j=E0 pr=E9sent dans ma liste en d=E9finissant mes crit=E8res de
recherche.
J'aimerai pour cela d=E9finir une classe qui h=E9rite de collection.Set
comme dans l'exemple donn=E9e dans la documentation python :
http://docs.python.org/library/collections.html et surcharger la
m=E9thode __contains__().
Probl=E8me la classe Set dans le Module collections est introuvable!
Question : Y a t-il un moyen propre et plus rapide de faire ce que je
d=E9sire ? et sinon est ce que quelqu'un a une id=E9e concernant la non
pr=E9sence de la classe Set dans le module collections puisque je suis
sur la version 2.5.2 et que dans la documentation il est pr=E9cisi=E9 que
c'est inclu depuis la version 2.4
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
Pierre Quentel
On 9 juin, 12:40, wrote:
Bonjour,
J'utilise python 2.5.2, et voici mon problème :
J'instancie des classes que j'ajoute à une liste. Jusque la pas de problème. Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si il est déjà présent dans ma liste en définissant mes critères d e recherche. J'aimerai pour cela définir une classe qui hérite de collection.Set comme dans l'exemple donnée dans la documentation python :http://docs.p ython.org/library/collections.htmlet surcharger la méthode __contains__(). Problème la classe Set dans le Module collections est introuvable! Question : Y a t-il un moyen propre et plus rapide de faire ce que je désire ? et sinon est ce que quelqu'un a une idée concernant la non présence de la classe Set dans le module collections puisque je suis sur la version 2.5.2 et que dans la documentation il est précisié que c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on voit quand même en haut à gauche "Python v2.6.2", et au-dessus du tableau des "Abstract Base Classes" une note qui indique qu'elles ont été ajoutées dans la version 2.6. ce n'est donc pas illogique que tu ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list) d'instances d'une classe, pour tester si une instance existe déjà dans la liste avant insertion, il suffit de faire :
if the_instance not in the_list: the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité entre les éléments de la liste et l'instance ; si un de ces tests est vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode "__contains__()" mais plutôt de bien définir ce que signifie qu'une instance est égale à une autre ; donc de définir la méthode __eq__ de la classe
la_liste = [] for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]: inst = Prenom(prenom) if not inst in la_liste: la_liste.append(inst)
print [item.prenom for item in la_liste] ============
Ici, deux instances de la classe Prenom sont égales si leur attribut "prenom" une fois mis en minuscules est le même, par exemple Prenom ("Pierre") est égal à Prenom("pierre"). Le test "if not inst in la_liste" élimine bien les instances égales
- Pierre
On 9 juin, 12:40, vincent.bren...@gmail.com wrote:
Bonjour,
J'utilise python 2.5.2, et voici mon problème :
J'instancie des classes que j'ajoute à une liste.
Jusque la pas de problème.
Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si
il est déjà présent dans ma liste en définissant mes critères d e
recherche.
J'aimerai pour cela définir une classe qui hérite de collection.Set
comme dans l'exemple donnée dans la documentation python :http://docs.p ython.org/library/collections.htmlet surcharger la
méthode __contains__().
Problème la classe Set dans le Module collections est introuvable!
Question : Y a t-il un moyen propre et plus rapide de faire ce que je
désire ? et sinon est ce que quelqu'un a une idée concernant la non
présence de la classe Set dans le module collections puisque je suis
sur la version 2.5.2 et que dans la documentation il est précisié que
c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on
voit quand même en haut à gauche "Python v2.6.2", et au-dessus du
tableau des "Abstract Base Classes" une note qui indique qu'elles ont
été ajoutées dans la version 2.6. ce n'est donc pas illogique que tu
ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list)
d'instances d'une classe, pour tester si une instance existe déjà dans
la liste avant insertion, il suffit de faire :
if the_instance not in the_list:
the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité
entre les éléments de la liste et l'instance ; si un de ces tests est
vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode
"__contains__()" mais plutôt de bien définir ce que signifie qu'une
instance est égale à une autre ; donc de définir la méthode __eq__ de
la classe
la_liste = []
for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]:
inst = Prenom(prenom)
if not inst in la_liste:
la_liste.append(inst)
print [item.prenom for item in la_liste]
============
Ici, deux instances de la classe Prenom sont égales si leur attribut
"prenom" une fois mis en minuscules est le même, par exemple Prenom
("Pierre") est égal à Prenom("pierre"). Le test "if not inst in
la_liste" élimine bien les instances égales
J'instancie des classes que j'ajoute à une liste. Jusque la pas de problème. Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si il est déjà présent dans ma liste en définissant mes critères d e recherche. J'aimerai pour cela définir une classe qui hérite de collection.Set comme dans l'exemple donnée dans la documentation python :http://docs.p ython.org/library/collections.htmlet surcharger la méthode __contains__(). Problème la classe Set dans le Module collections est introuvable! Question : Y a t-il un moyen propre et plus rapide de faire ce que je désire ? et sinon est ce que quelqu'un a une idée concernant la non présence de la classe Set dans le module collections puisque je suis sur la version 2.5.2 et que dans la documentation il est précisié que c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on voit quand même en haut à gauche "Python v2.6.2", et au-dessus du tableau des "Abstract Base Classes" une note qui indique qu'elles ont été ajoutées dans la version 2.6. ce n'est donc pas illogique que tu ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list) d'instances d'une classe, pour tester si une instance existe déjà dans la liste avant insertion, il suffit de faire :
if the_instance not in the_list: the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité entre les éléments de la liste et l'instance ; si un de ces tests est vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode "__contains__()" mais plutôt de bien définir ce que signifie qu'une instance est égale à une autre ; donc de définir la méthode __eq__ de la classe
la_liste = [] for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]: inst = Prenom(prenom) if not inst in la_liste: la_liste.append(inst)
print [item.prenom for item in la_liste] ============
Ici, deux instances de la classe Prenom sont égales si leur attribut "prenom" une fois mis en minuscules est le même, par exemple Prenom ("Pierre") est égal à Prenom("pierre"). Le test "if not inst in la_liste" élimine bien les instances égales
- Pierre
vincent.brenner
On 9 juin, 14:50, Pierre Quentel wrote:
On 9 juin, 12:40, wrote:
> Bonjour,
> J'utilise python 2.5.2, et voici mon problème :
> J'instancie des classes que j'ajoute à une liste. > Jusque la pas de problème. > Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si > il est déjà présent dans ma liste en définissant mes critères de > recherche. > J'aimerai pour cela définir une classe qui hérite de collection.Set > comme dans l'exemple donnée dans la documentation python :http://docs .python.org/library/collections.htmletsurcharger la > méthode __contains__(). > Problème la classe Set dans le Module collections est introuvable! > Question : Y a t-il un moyen propre et plus rapide de faire ce que je > désire ? et sinon est ce que quelqu'un a une idée concernant la non > présence de la classe Set dans le module collections puisque je suis > sur la version 2.5.2 et que dans la documentation il est précisié q ue > c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on voit quand même en haut à gauche "Python v2.6.2", et au-dessus du tableau des "Abstract Base Classes" une note qui indique qu'elles ont été ajoutées dans la version 2.6. ce n'est donc pas illogique que t u ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list) d'instances d'une classe, pour tester si une instance existe déjà dan s la liste avant insertion, il suffit de faire :
if the_instance not in the_list: the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité entre les éléments de la liste et l'instance ; si un de ces tests est vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode "__contains__()" mais plutôt de bien définir ce que signifie qu'une instance est égale à une autre ; donc de définir la méthode __eq_ _ de la classe
la_liste = [] for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]: inst = Prenom(prenom) if not inst in la_liste: la_liste.append(inst)
print [item.prenom for item in la_liste] ============
Ici, deux instances de la classe Prenom sont égales si leur attribut "prenom" une fois mis en minuscules est le même, par exemple Prenom ("Pierre") est égal à Prenom("pierre"). Le test "if not inst in la_liste" élimine bien les instances égales
- Pierre
Merci beaucoup Pierre pour ce petit résumé.
On 9 juin, 14:50, Pierre Quentel <quentel.pie...@wanadoo.fr> wrote:
On 9 juin, 12:40, vincent.bren...@gmail.com wrote:
> Bonjour,
> J'utilise python 2.5.2, et voici mon problème :
> J'instancie des classes que j'ajoute à une liste.
> Jusque la pas de problème.
> Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si
> il est déjà présent dans ma liste en définissant mes critères de
> recherche.
> J'aimerai pour cela définir une classe qui hérite de collection.Set
> comme dans l'exemple donnée dans la documentation python :http://docs .python.org/library/collections.htmletsurcharger la
> méthode __contains__().
> Problème la classe Set dans le Module collections est introuvable!
> Question : Y a t-il un moyen propre et plus rapide de faire ce que je
> désire ? et sinon est ce que quelqu'un a une idée concernant la non
> présence de la classe Set dans le module collections puisque je suis
> sur la version 2.5.2 et que dans la documentation il est précisié q ue
> c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on
voit quand même en haut à gauche "Python v2.6.2", et au-dessus du
tableau des "Abstract Base Classes" une note qui indique qu'elles ont
été ajoutées dans la version 2.6. ce n'est donc pas illogique que t u
ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list)
d'instances d'une classe, pour tester si une instance existe déjà dan s
la liste avant insertion, il suffit de faire :
if the_instance not in the_list:
the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité
entre les éléments de la liste et l'instance ; si un de ces tests est
vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode
"__contains__()" mais plutôt de bien définir ce que signifie qu'une
instance est égale à une autre ; donc de définir la méthode __eq_ _ de
la classe
la_liste = []
for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]:
inst = Prenom(prenom)
if not inst in la_liste:
la_liste.append(inst)
print [item.prenom for item in la_liste]
============
Ici, deux instances de la classe Prenom sont égales si leur attribut
"prenom" une fois mis en minuscules est le même, par exemple Prenom
("Pierre") est égal à Prenom("pierre"). Le test "if not inst in
la_liste" élimine bien les instances égales
> J'instancie des classes que j'ajoute à une liste. > Jusque la pas de problème. > Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si > il est déjà présent dans ma liste en définissant mes critères de > recherche. > J'aimerai pour cela définir une classe qui hérite de collection.Set > comme dans l'exemple donnée dans la documentation python :http://docs .python.org/library/collections.htmletsurcharger la > méthode __contains__(). > Problème la classe Set dans le Module collections est introuvable! > Question : Y a t-il un moyen propre et plus rapide de faire ce que je > désire ? et sinon est ce que quelqu'un a une idée concernant la non > présence de la classe Set dans le module collections puisque je suis > sur la version 2.5.2 et que dans la documentation il est précisié q ue > c'est inclu depuis la version 2.4
Bonjour Vincent,
La doc n'est pas hyper claire, mais sur la page que tu indiques on voit quand même en haut à gauche "Python v2.6.2", et au-dessus du tableau des "Abstract Base Classes" une note qui indique qu'elles ont été ajoutées dans la version 2.6. ce n'est donc pas illogique que t u ne les trouves pas sur la 2.5.2
Sinon, si tu as une liste (au sens de la classe intégrée list) d'instances d'une classe, pour tester si une instance existe déjà dan s la liste avant insertion, il suffit de faire :
if the_instance not in the_list: the_list.append(the_instance)
Ici, "not in" signifie que le programme va faire le test d'égalité entre les éléments de la liste et l'instance ; si un de ces tests est vrai, "not in" est faux, donc on n'ajoute pas l'instance dans la liste
Le problème à résoudre n'est donc pas de surcharger la méthode "__contains__()" mais plutôt de bien définir ce que signifie qu'une instance est égale à une autre ; donc de définir la méthode __eq_ _ de la classe
la_liste = [] for prenom in ["Pierre","pierre","Vincent","Paul","vincent"]: inst = Prenom(prenom) if not inst in la_liste: la_liste.append(inst)
print [item.prenom for item in la_liste] ============
Ici, deux instances de la classe Prenom sont égales si leur attribut "prenom" une fois mis en minuscules est le même, par exemple Prenom ("Pierre") est égal à Prenom("pierre"). Le test "if not inst in la_liste" élimine bien les instances égales
- Pierre
Merci beaucoup Pierre pour ce petit résumé.
Bruno Desthuilliers
a écrit :
Bonjour,
J'utilise python 2.5.2, et voici mon problème :
J'instancie des classes que j'ajoute à une liste.
Euh... Tu veux dire que tu ajout des instances à une liste, ou que tu ajoute les classes elle-même à la liste ???
Jusque la pas de problème. Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si il est déjà présent dans ma liste
Chaque instance est unique (testable avec l'opérateur 'is' ou la fonction id()).
Tu veux parler d'une égalité (même valeur de champs), alors, pas d'identité ?
J'aimerai pour cela définir une classe qui hérite de collection.Set comme dans l'exemple donnée dans la documentation python : http://docs.python.org/library/collections.html et surcharger la méthode __contains__(). Problème la classe Set dans le Module collections est introuvable!
cf réponse de Pierre.
Question : Y a t-il un moyen propre et plus rapide de faire ce que je désire ?
Disons que la description de ton problème n'est pas tout à fait claire (pour moi en tous cas).
Si ton besoin est d'éviter d'ajouter deux fois la même (au sens d'un test d'identité) instance dans ta liste, et que l'ordre n'est pas important, il suffit d'utiliser le type (builtin) 'set'. Sinon, peux-tu en dire un peu plus ?
vincent.brenner@gmail.com a écrit :
Bonjour,
J'utilise python 2.5.2, et voici mon problème :
J'instancie des classes que j'ajoute à une liste.
Euh... Tu veux dire que tu ajout des instances à une liste, ou que tu
ajoute les classes elle-même à la liste ???
Jusque la pas de problème.
Avant l'ajout de l'objet dans ma liste j'aimerai pouvoir vérifier si
il est déjà présent dans ma liste
Chaque instance est unique (testable avec l'opérateur 'is' ou la
fonction id()).
Tu veux parler d'une égalité (même valeur de champs), alors, pas
d'identité ?
J'aimerai pour cela définir une classe qui hérite de collection.Set
comme dans l'exemple donnée dans la documentation python :
http://docs.python.org/library/collections.html et surcharger la
méthode __contains__().
Problème la classe Set dans le Module collections est introuvable!
cf réponse de Pierre.
Question : Y a t-il un moyen propre et plus rapide de faire ce que je
désire ?
Disons que la description de ton problème n'est pas tout à fait claire
(pour moi en tous cas).
Si ton besoin est d'éviter d'ajouter deux fois la même (au sens d'un
test d'identité) instance dans ta liste, et que l'ordre n'est pas
important, il suffit d'utiliser le type (builtin) 'set'. Sinon, peux-tu
en dire un peu plus ?
Tu veux parler d'une égalité (même valeur de champs), alors, pas d'identité ?
J'aimerai pour cela définir une classe qui hérite de collection.Set comme dans l'exemple donnée dans la documentation python : http://docs.python.org/library/collections.html et surcharger la méthode __contains__(). Problème la classe Set dans le Module collections est introuvable!
cf réponse de Pierre.
Question : Y a t-il un moyen propre et plus rapide de faire ce que je désire ?
Disons que la description de ton problème n'est pas tout à fait claire (pour moi en tous cas).
Si ton besoin est d'éviter d'ajouter deux fois la même (au sens d'un test d'identité) instance dans ta liste, et que l'ordre n'est pas important, il suffit d'utiliser le type (builtin) 'set'. Sinon, peux-tu en dire un peu plus ?