CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[python] vérifier si un objet correspond à certains attributs

Carapucelle
Carapucelle
Niveau 17
21 avril 2015 à 21:18:42

Yo :noel:

Est-il possible de vérifier si un objet d'une certaine classe correspond à certains attributs, puis de récupérer le nom de l'objet afin de récupérer d'autres attributs de cet objet ?

En gros, dans cet exemple : http://puu.sh/hm143/9108bfdf20.png

Je veux vérifier qu'un objet de la classe "Rond" est adjacent au rond noir, sachant que ses coordonnées sont des attributs et, le cas échéant, pouvoir récupérer son attribut "couleur".

Merci d'avance. :noel:

Triple14
Triple14
Niveau 10
22 avril 2015 à 12:31:47

Tu as la fonction suivante, permettant de verifier que l'objet my_object possède l'attribut my_attribute:

hasattr(my_object, 'my_attribute')

De plus, pour récupérer un attribut, il y a:
getattr(my_object, 'my_attribute')

Et enfin tu peux aussi changer la valeur via setattr (toujours sur le même modèle).

Souvent, on peut se passer de ces fonctions et utiliser la manière normale de faire (my_object.my_attribute.

Carapucelle
Carapucelle
Niveau 17
22 avril 2015 à 12:38:24

Je sais ça, mais en fait j'aimerais partir des attributs pour trouver l'objet, et pas l'inverse ! Existe-t-il une fonction qui existe pour le faire ou faut-il que j'essaye de bidouiller ma propre fonction ?

Triple14
Triple14
Niveau 10
23 avril 2015 à 11:02:33

Dans ce cas je comprend pas ton problème.

Qu'est-ce que veut dire "partir des attributs" ? Partir de leur valeur ou de leur nom ? Et, dans tous les cas, que veux-tu en retour ? La liste des objets possédant de tels attributs ? Si c'est le nom des attributs, je pense que t'as pas d'autre choix que d'itérer sur tous les objets en mémoire et de faire le test avec hasattr. Si c'est la valeur, c'est vraiment bizarre ce que tu cherches à faire^^

BlackChinchilla
BlackChinchilla
Niveau 10
23 avril 2015 à 11:05:27

Le 22 avril 2015 à 12:38:24 carapucelle a écrit :
Je sais ça, mais en fait j'aimerais partir des attributs pour trouver l'objet, et pas l'inverse ! Existe-t-il une fonction qui existe pour le faire ou faut-il que j'essaye de bidouiller ma propre fonction ?

J'connais pas le Python, mais si t'as tes ronds dans un array, tu peux loop l'array, avec un check de l'attribut en question :(

Carapucelle
Carapucelle
Niveau 17
23 avril 2015 à 11:45:30

Le 23 avril 2015 à 11:02:33 Triple14 a écrit :
Dans ce cas je comprend pas ton problème.

Qu'est-ce que veut dire "partir des attributs" ? Partir de leur valeur ou de leur nom ? Et, dans tous les cas, que veux-tu en retour ? La liste des objets possédant de tels attributs ? Si c'est le nom des attributs, je pense que t'as pas d'autre choix que d'itérer sur tous les objets en mémoire et de faire le test avec hasattr. Si c'est la valeur, c'est vraiment bizarre ce que tu cherches à faire^^

En fait, je veux vérifier si un objet de telle classe ayant telles valeurs pour tels attributs existe, et si oui, pouvoir récupérer son nom.

Le 23 avril 2015 à 11:05:27 BlackChinchilla a écrit :

Le 22 avril 2015 à 12:38:24 carapucelle a écrit :
Je sais ça, mais en fait j'aimerais partir des attributs pour trouver l'objet, et pas l'inverse ! Existe-t-il une fonction qui existe pour le faire ou faut-il que j'essaye de bidouiller ma propre fonction ?

J'connais pas le Python, mais si t'as tes ronds dans un array, tu peux loop l'array, avec un check de l'attribut en question :(

Je pige pas. :(

BlackChinchilla
BlackChinchilla
Niveau 10
23 avril 2015 à 12:06:43

Bah j'peux te donner un exemple delphi, suffirat que t'applique en Python :hap:

disons que t'as un tableau de ronds genre 'array_ronds' allant de 0 à 99.
var
array_ronds: array[0..99] of Ronds; // :hap:
rond_trouvé: Rond;

for i:=0 to array_ronds.count-1 do begin //On fait un loop de 0 jusqu'à la fin de l'array
if array_ronds[i].attribut='attribut que tu cherche' then begin //on vérifie l'att. de chaque rond de l'array jusqu'à trouver

rond_trouvé:=array_ronds[i]; //on fout le rond qu'on a trouvé dans la variable rond_trouvé
//le rond en question est mtn dans la variable rond_trouvé
break; //on quitte le loop car on a pas besoin de vérifier les autres
end;
end;

J'peux pas trop expliquer autrement, mais le Delphi est ultra simple, donc tu devrais comprendre, j'espère. :hap:

Message édité le 23 avril 2015 à 12:10:59 par BlackChinchilla
Carapucelle
Carapucelle
Niveau 17
23 avril 2015 à 12:17:19

Ah oui je vois. :( Je pensais pas qu'on pouvait remplacer le nom de l'objet par un autre truc !

BlackChinchilla
BlackChinchilla
Niveau 10
23 avril 2015 à 12:19:00

Bah ça c'est en Delphi, je connais pas le python :hap:

Mais même si c'est pas aussi simple, y'a forcément une façon de faire un truc comme ça dans tout les langages :oui:

Triple14
Triple14
Niveau 10
23 avril 2015 à 12:26:17

Oui l'exemple est tout à fait transférable en python.
D'ailleurs je vois pas où est la difficulté, du moment que tu possèdes la liste des objets susceptibles d'être tels que tu le veux. Après, de nouveau, qu'entends-tu par récupérer le nom ? le nom de la variable ? Ca c'est pas possible via une fonction python, et c'est normal parce que pour une adresse en mémoire, il peut correspondre de multiples noms de variables. Tu peux toujours utiliser un dictionnaire pour faire les liens objets-noms de variable par contre.

BlackChinchilla
BlackChinchilla
Niveau 10
23 avril 2015 à 12:36:24

Bon après si tu cherche la position du rond comme critère ça va être compliqué.

Soit tu cherche par position absolue (array_ronds[i].X/Y), soit par position relative au rond rouge, mais encore là, faut que t'ait soit la position exacte, ou que tu créée une function qui scanne dans un rayon plus gros et que t'appelle la function à la place de...

if array_ronds[i].attribut='attribut que tu cherche' then begin

Bref, faudra que tu foute un peu de logique dans tout ça :hap:

Carapucelle
Carapucelle
Niveau 17
23 avril 2015 à 13:18:55

C'est bon, j'ai réussi, merci encore ! :noel:

BlackChinchilla
BlackChinchilla
Niveau 10
23 avril 2015 à 13:20:14

Pas de quoi :noel:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment