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 03/11/2006, à 14:21

leck

detruire un objet - python

salut tout le monde je fais un casse brique en python.
J'aimerait faire en sorte qu'un objet (clBalle).
Ce supprime lui meme (quand il sort de la fenettre).
J'ai essayer "self.destroy" mais sa marche po.
Est ce que c'est possible ?
Si oui comment faire.

Merci de vos reponse à l'avance.

Hors ligne

#2 Le 03/11/2006, à 15:59

Crashforburn

Re : detruire un objet - python

Je crois que la gestion mémoire se fait automatiquement en python, comme en Java par ailleurs...Mais pas comme dans le C/C++ ou tu gères toi même wink


Un blog inutile de plus : http://crashforburn.free.fr/dotclear/
[Membre du club des beaux Ubunteros] : http://forum.ubuntu-fr.org/viewtopic.php?pid=535299
Contre la nouvelle année, votons fonacon : http://www.fonacon.net/

Hors ligne

#3 Le 03/11/2006, à 16:05

snapshot

Re : detruire un objet - python

En python, ce n'est pas au programmeur de détruire les objets... C'est le langage qui le fait automatiquement quand il n'est plus référencé :

class Foo:
	def __init__(self):
		print "dans le constructeur"
	def __del__(self):
		print "dans le destructeur"

Ensuite :

>>> x=Foo()
dans le constructeur
>>> y=x
>>> x=0
>>> y=1
dans le destructeur

Donc, laisse tomber le déstructeur python, et construit à la place une méthode explicite destroy(self) que tu devras appeler toi même le moment venu...

EDIT: grillé par Crashforburn smile

Dernière modification par snapshot (Le 03/11/2006, à 16:07)


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#4 Le 03/11/2006, à 16:14

leck

Re : detruire un objet - python

pas compris tes explications mais enfete je mets plusieur fois le meme objet dans une liste et je veut que l'objet se retire de lui même de cette liste

Hors ligne

#5 Le 03/11/2006, à 19:20

snapshot

Re : detruire un objet - python

Quand tu fais x=Foo(), il y a un objet de la classe Foo qui porte le nom x.

Quand tu fais y=x, il y a toujours un seul et unique objet Foo, mais celui est référencé par deux noms : x et y

Quand tu fais x=0, tu as deux objets : le 0 qui est référencé par x, et le Foo qui n'est plus que référencé par y

Quand tu fais y=1, l'objet Foo n'est plus référencé par aucun nom. Il est alors candidat à la suppression, chose que python fait immédiatement (affichage de « dans le destructeur »)

Tu n'es pas sûr que le destructeur sera appelé immédiatement. C'est le problème de python, pas le tiens. Rien ne garantit que dans une version future de python, les destructeurs ne soient appelés que de temps en temps, pour des questions d'optimisations.

Pour ton problème, il faut que tu fasses une méthode remove(self) (ou destroy si tu préfères). C'est cette méthode qui doit faire les pops dans les listes dans lesquelles il est référencé.

Dernière modification par snapshot (Le 03/11/2006, à 19:21)


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne