Bonjour a tous,
je souhaite a partir d un fichier ".txt" extraire/creer plusieur objets a l aide d'une boucle.
Tous marche "presque" bien, J'ouvre le fichier, je parviens a extraire les donnees, a creer les objets......sauf que pour utilser les objets a la fin de la procedure, je les ranges dans une liste. (je n'ai pas trouver d'autre solutions..Pb d'espace des noms....
Un print sur la liste me confirme bien la creation des objets (meme si c'est pas tres causants....
>>> print liste_point
[<__main__.Point instance at 0x00E63F30>,......etc.....]
Mon probleme viens du fait de vouloir utiliser les objets de cette liste, par exemple calculer la distance entre 2 points, comment faire pour retrouver le nom exact de mes objets ...???? (Une solution est d'integrer ce nom dans l'objet ? mais cela ne repons pas a mon probleme d'utilisation de l'objet en question..., de plus cela m'oblige a gerer une liste parallele... cela me semble lourds, apres plusieur heures de recherche sur Internet, je vous appelle a l'aide.... Merci par avance
ci dessous mon code .....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Fichier point.txt (fichier d'entree) POINT 1 40 60 POINT 2 10 -5 POINT 3 0 60 class Point: """Definiion d'un point""" def __init__(self,x=0, y=0): self.x =float(x) self.y =float(y) def lit_point (fichier): 'ouvre un fichier .txt et extrait les points' fs=open(fichier,'r') LISTE_POINT =[] while 1: ligne=fs.readline() if ligne=="": break else: ligne=ligne[:-1] # suppression du caractere de fin de ligne if "POINT" in ligne[0:7].upper():# longeur des champs 8 caracteres nom="P"+ligne[8:16].strip() # creation du nom du point nom=Point(x=ligne[16:24].strip(),y=ligne[24:32].strip()) # creation de l'objet point LISTE_POINT.append(nom) # Ajout du nouveau point a la liste fs.close() return LISTE_POINT # Fin de boucle While from math import sqrt def distance(pt1,pt2): 'calcul la distance entre 2 points' distance =sqrt((pt2.x-pt1.x)**2+(pt2.y-pt1.y)**2+(pt2.z-pt1.z)**2) return distance
Partager