IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Methode de class d'autodestruction


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    etudien
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : etudien

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Par défaut Methode de class d'autodestruction
    Bonjours,
    J'expose mon problème:
    J'ai une classe joueur qui fait des paris, un pari étant une nouvelle instance d'une class Pari.
    Lorsque mon programme vient a checké quels paris sont gagant ou perdant j'aimerai les del.
    Le problème étant que je ne sais pas comment delete toutes les instances d'une class.

    classes.py :
    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
     
    class Bet:
    	bets = []
    	def __init__(self, player, case, value, IDPlayer):
    		try:
    			IDPlayer.tellMoney() >= value
    		except:
    			print(player + " n'as pas assez d'argent")
    		else:
    			Bet.bets.append(self)
    			self.__IDPlayer = IDPlayer
    			self.player = player
    			self.__value = value
    			self.__case = case
    			IDPlayer.popMoney(-value)
     
    			#print('__init__(%s)' % self)
     
    	def checkWin(self, ballpos):
    		if self.__case == ballpos :
    			self.__IDPlayer.balanceAffection(self.__value*6)
    			print(str(ballpos) + "  " + self.player + " recupère 6 fois sa mise : "+str(self.__value * 6))
    		else:
    			print(self.player + "Perd sa mise misé sur la case " + str(self.__case))
     
     
    	def __del__(self):
    		print('__del__(%s)' % self)
    game.py :
    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
    34
     
    from classes import *
    import random as rd
     
    TestPlayer1 = AIPlayer()
     
    def betTime():
    	for p in AIPlayer.playersID:
    		AIPlayer.makeBet(p)
     
    def checkWin(ballpos):
    	for b in Bet.bets:
    		Bet.checkWin(b, ballpos)
     
     
     
    def giveInformationToPlayers(ballpos):
    	AIPlayer.ballpos = ballpos
     
    for t in range (2):
     
    	#clear all bets
     
    	print("Nouveau lancé")
    	betTime()
     
    	#print(TestPlayer1.tellMoney())
     
    	ballpos = rd.randint(0,6)
    	print("La balle s'arrete en " + str(ballpos))
     
    	giveInformationToPlayers(ballpos)
     
    	checkWin(ballpos)
    J'ai essayé plusieurs choses comme mettre un del self a la fin de Bet.checkWin() ca n'as pas marché. de même dans le for de la fct° checkWin(ballpos) j'ai essayé un del (b) pareil sans resultats. Les paris restes présent sur plusieurs tour de jeu ce qui est un peu génant. Je suis un peu perdu. En plus je sais bien que c'est pas très propre comme code. Il faudrait que je fasse hériter la class Bet de la classe player ? Parceque il est possible de faire appel a la methode d'affectation de la balance du joueur n'importe ou ?

    Enfin ce topic est surtout pour essayé de résoudre le problème du del de toutes les instances d'une classe.

    Cordialement, Jean.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 726
    Par défaut
    Salut,

    Citation Envoyé par jean2401 Voir le message
    Enfin ce topic est surtout pour essayé de résoudre le problème du del de toutes les instances d'une classe.
    Pour détruire une instance, il faut supprimer toutes les références à cette instance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> class A:
    ...     def __del__(self):
    ...         print ('deleted')
    ...
    >>> a = b = A()
    >>> a = None
    >>> b = None
    deleted
    >>>
    Il n'y a qu'après le "b = None" que __del__ sera appelé.
    Comme il n'est pas facile de supprimer toutes les références, il sera plus simple de positionner un attribut qui marquera "deleted" et qui remontera une erreur si on essaie d'en changer l'état et, par exemple, stocker dans une liste (ou autre) les objets "actifs".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jean2401 Voir le message
    Il faudrait que je fasse hériter la class Bet de la classe player ?
    Bonjour
    Quand une classe B hérite de A, ça signifie que "B" est un cas particulier de "A". Exemple, une classe "voiture" qui hérite de "véhicule" (parce qu'une voiture est avant tout un véhicule) ou bien une classe "carré" qui hérite de "rectangle" parce qu'un carré est aussi un rectangle. Il pourrait même hériter à la fois de "rectangle" (parallélogramme dont les diagonales sont de même longueur) et de "losange" (parallélogramme dont les diagonales se coupent à angle droit).
    Donc est-ce que, pour toi, un pari est un certain type de joueur ??? Moi je ne pense pas. Un joueur c'est une personne alors qu'un pari c'est une action faite par cette personne. Les deux sont en relation, oui, mais ne sont pas la même chose.

    Citation Envoyé par jean2401 Voir le message
    Enfin ce topic est surtout pour essayé de résoudre le problème du del de toutes les instances d'une classe.
    Tu dois toujours gérer ce que tu crées. Tu crées "n" paris, tu dois alors les stocker. Tu n'en as plus besoin ok mais comme ils sont stockés ils peuvent être retrouvés et deletés.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Citation Envoyé par jean2401 Voir le message
    Bonjours,
    Le problème étant que je ne sais pas comment delete toutes les instances d'une class.
    Peut-être que conceptuellement on pourrait se poser la question suivante:
    Est-il plus coûteux de supprimer une variable ou modifier son état ?

    EDIT: Je pense que c'est l'esprit qu'à voulu exprimer wiztricks

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/02/2006, 12h46
  2. [POO] Prob avec une méthode de classe
    Par Ludo75 dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 22h37
  3. [DLL] Methodes de classe et dll
    Par chronos dans le forum C++
    Réponses: 11
    Dernier message: 27/04/2005, 17h18
  4. Méthode de classe et copie d'objets
    Par Duloup dans le forum Général Python
    Réponses: 5
    Dernier message: 11/04/2005, 16h27
  5. Visibilité de methodes dans Classe de Class
    Par Math75 dans le forum C++
    Réponses: 9
    Dernier message: 28/09/2004, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo