héritage de classe

héritage de classe - Python - Programmation

Marsh Posté le 02-05-2005 à 00:09:46    

Bonsoir à tous, merci de m'aider.
 
J'apprends Python après plusieurs années passées sur le C++ et j'ai du mal à m'y retrouver question POO... Voici ma question :
 
Je crée une classe 'C0' puis une classe dérivée 'C1'; je pensais qu'à chaque appel du constructeur de C1 le constructeur de C0 était automatiquement appelé. Ce qui n'est pas le cas. C'est normal/pourquoi ? (désolé si j'ai rien capté !)

Reply

Marsh Posté le 02-05-2005 à 00:09:46   

Reply

Marsh Posté le 02-05-2005 à 00:18:43    

__init__ n'est pas un constructeur, c'est une méthode d'initialisation mais quand __init__ est appelé l'objet est déjà créé. En python, le contructeur n'est pas accessible.
Si une classe enfant veut étendre l'une des fonctions de la classe parent, la méthode de la classe enfant doit explicitement appeler celle de la classe parent
 
Accessoirement, tu devrais lire Dive Into Python, c'est l'une des meilleures docs de Python que je connaisse.


Message édité par masklinn le 02-05-2005 à 00:19:47

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

Marsh Posté le 02-05-2005 à 00:23:30    

Merci Masklinn pour cette réponse rapide et précise. Ca m'apprendra à lire entre les lignes et à ignorer la doc' ...

Reply

Marsh Posté le 02-05-2005 à 00:32:29    

Pas grave, je crois pas que ça soit écrit dans le tutorial Python de tte façon.
 
Lit Dive, je te le conseille


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

Marsh Posté le 02-05-2005 à 00:53:07    

Ok, voilà ce que cela donnerait (mais ça me fait quand même bizarre d'écrire les choses ainsi] :
 
class C0:
    def __init__(self):
        print "classe C0"
 
class C1(C0):
    def __init__(self):
        C0.__init__(self)
        print "classe C1"
 
obj = C1()
 
et l'on verrait bien apparaître les messages : "classe C0" puis "classe C1"

Reply

Marsh Posté le 02-05-2005 à 00:53:52    

Ouaip, c'est ça.


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

Marsh Posté le 02-05-2005 à 09:26:44    

merci d'hériter d'object :o

Reply

Sujets relatifs:

Leave a Replay

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