Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/06/2014, à 07:22

GP974

[Résolu]List() Python

Bonjour j'ai un problème avec une de mes listes python

j'ai coder un objet et je désire faire une liste de cet objet

J'ai donc fais une boucle qui prend en entrée un tableau (obtenu via sqlite) et qui pour chaque colonne me fais mon objet et l'ajoute a ma liste d'objet si il correspond a ce que je cherche.
donc voila la boucle


class TabHost(object):
    def __init__(self):
		self.host = ""
		self.ip = ""
		self.port = list()

for response in responseRequest:								#Iterate tab request
		for rhost in listeHost:										#Iterate tab ListHost
			if response.Host != "NULL":
				if response.Host == rhost.host:						#Host existant
					#fonctionne
				else:#Si l'host n'existe pas on l'ajoute au tableau
					tempHost2 = TabHost
					tempHost2.port = list()
					tempHost2.host = response.Host
					tempHost2.ip = response.IP
					if response.Port != "NULL":
						tempHost2.port.append(response.Port + "/" + response.PortName)
					print "Creation host:" + tempHost2.host + " Port:" + tempHost2.port[0]
					listeHost.append(tempHost2)
					del tempHost2
					print "Verif host:" + listeHost[-1].host + " Port:" + listeHost[-1].port[0]
					for rhost in listeHost:
						print "New host"
						print "ip: " + rhost.ip
						print "hostname:" + rhost.host
						print "=Port="
						for rport in rhost.port:
							print rport
	print "======================="
	for rhost2 in listeHost:
		print "New host"
		print "ip: " + rhost2.ip
		print "hostname:" + rhost2.host
		print "=Port="
		for rport2 in rhost2.port:
			print rport2

Donc quand j'affiche les résultats juste après l'ajout tous vas bien
Mais après la sortie de la boucle après le print "======================="
Mon tableaux n'est composé que de X fois le dernier objet

si j'ai 8 objets dans mon tableau les 8 objets sont 8 fois le dernier rajouté au lieu d’être 8 objets différents
je ne comprend pas pourquoi quelqu'un a une idée ?

Dernière modification par GP974 (Le 11/06/2014, à 08:32)


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

#2 Le 11/06/2014, à 08:11

tiramiseb

Re : [Résolu]List() Python

Salut

J'ai survolé ton code très rapidement, je ne l'ai pas testé, mais il y a une erreur flagrante : tu n'instancies pas ta classe TabHost :

tempHost2 = TabHost

à remplacer par :

tempHost2 = TabHost()


Par ailleurs, quelques commentaires :
- pour instancier une liste, il est habituel de faire "xxx = []" et non "xxx = list()"
- dans ta classe TabHost, tu configures déjà self.port = list(), donc pourquoi refaire la même chose dans ta boucle ?
- pour mettre des valeurs dans des chaînes, évite l'opérateur + et privilégie la notation "".format(xxx) (ou, à la limite, "" % (xxx))

Dernière modification par tiramiseb (Le 11/06/2014, à 08:15)

Hors ligne

#3 Le 11/06/2014, à 08:14

tiramiseb

Re : [Résolu]List() Python

Par ailleurs, tu n'as pas de code dans ton "if response.Host == rhost.host:"... j'imagine que c'est pour simplifier ce que tu nous montres et qu'en réalité il y en a... car sinon, ce code ne pourra pas fonctionner...

Hors ligne

#4 Le 11/06/2014, à 08:25

GP974

Re : [Résolu]List() Python

Ok merci
j'avais déjà essayer et je me retrouve avec un

  File "/home/guillaume/Bureau/views.py", line 148, in getStat
    tempHost2 = TabHost()
TypeError: 'module' object is not callable

Pour le reste
1)oui oui il y a du code dans la partie if response.Host == rhost.host: wink
2)Corrigé merci
3)Ok


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

#5 Le 11/06/2014, à 08:29

tiramiseb

Re : [Résolu]List() Python

On dirait que tu as un module (que tu as importé) qui s'appelle TabHost, et ça entrerait en conflit avec ta classe TabHost...

Hors ligne

#6 Le 11/06/2014, à 08:29

GP974

Re : [Résolu]List() Python

Ok la bonne ligne est

tempHost2 = TabHost.TabHost()

ma déclaration est dans un fichier separé
import ObjHost as TabHost

Merci beaucoup Tiramiseb


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

#7 Le 11/06/2014, à 08:30

tiramiseb

Re : [Résolu]List() Python

Ah ben oui, si tu ne dis pas tout, on ne peut pas bien t'aider... tongue

Hors ligne