héritage

héritage - Python - Programmation

Marsh Posté le 27-07-2006 à 09:31:02    

Bonjour,  
 
j'ai une classe Action qui hérite de Ajout et Retrait. Syntaxiquement :  
 
class Ajout:
   def __init__():
         ...
 
class Ajout(Action): ...
class Retrait(Action): ...

 
Une classe Requete prend en argument une instance de Action. Comment puis-je savoir si cette action est un ajout ou un retrait?
 
class Requete:
 
    def __init__(self, action):
        #Si action de type ajout
              if action.de_type_table():
                   self.requete='CREATE TABLE '+...
              if action.de_type_champ():
                   self.requete='ALTER TABLE '+...
              if action.de_type_fk():
                   self.requete='ALTER TABLE '+ ...
        #Si action de type retrait
              if action.de_type_table():
                   self.requete='DROP TABLE '+...
              if action.de_type_champ():
                   self.requete='ALTER TABLE '+...
              if action.de_type_fk():
                   self.requete='ALTER TABLE '+ ...
 

Reply

Marsh Posté le 27-07-2006 à 09:31:02   

Reply

Marsh Posté le 27-07-2006 à 11:07:51    

je viens de trouver une façon de procéder :  
   #si action de type ajout >> va se traduire :  
   if action.__class__.__name__
 
merci et pardon pour le dérangement

Reply

Marsh Posté le 27-07-2006 à 17:56:05    

et en utilisant isinstance?  
je dis peut etre des bétises mais je crois que c'est plus propre que ta méthode, à confirmer :o

Code :
  1. class Action(object): pass
  2. class Ajout(Action): pass
  3. class Retrait(Action): pass
  4. instance = Ajout()
  5. isinstance(instance, Ajout)
  6. >>> True
  7. isinstance(instance, Retrait)
  8. >>> False

Reply

Marsh Posté le 27-07-2006 à 18:10:37    

Habituellement, en Python, on ne procède pas par des tests de types mais par des tests de capacité.
 
Mais ici... c'est complètement con comme structure, les classes Ajout et Retrait devraient se démerder toutes seules pour effectuer leurs actions [:pingouino]
La classe requête n'a strictement aucun intérêt [:pingouino]
 
Et j'ai pas l'impression que la classe Action fasse grand chose non plus [:pingouino]
 
Et accessoirement... C'EST QUOI CES CONCATENATIONS DE STRINGS POUR FAIRE DES REQUÊTES LÀ [:mlc] [:mlc] [:mlc]


Message édité par masklinn le 27-07-2006 à 18:11:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed