class, surcharge, incompréhension. - Python - Programmation
Marsh Posté le 13-01-2005 à 21:50:48
Code :
|
si tu veux un truc passe partout plutot que la fonction void
http://cvs.gnome.org/viewcvs/gdesk [...] iew=markup
self.emit = Null
et là t'es blindé
Marsh Posté le 13-01-2005 à 22:12:14
si tu dois vraiment changer le comportement en profondeur,; il faut te tourner vers le Design Pattern Stratégie. Tu peux la jouer:
- classique : tu délègues. Ta classe n'as qu'un seul attribut "self.__impl" que tu changes à souhait. "self.__impl = NullImpl()" par exemple, pour le reste, pour chaque méthode de ta classe de façade, il faut déléguer (tu peux le faire manuellement ou faire ça tout seul avec __getattr__
- rebelle : tu peux changer de __class__ à la volée
Marsh Posté le 13-01-2005 à 23:01:55
Design Pattern strategy
non attends t'enflammes pas, je vais déja regarder tout çà tranquillement et à tête reposée et essayer de comprendre..
si tu veux le résultat que j'essayes d'obtenir, je pourrais le faire facilement
mais surement pas de façon pratique et élégante et c'est ce que j'essayes de faire,
toujours à mon niveau biensur hein, mais j'avances pas vite par contre
en tous les cas je te remercies, et je vais tester tout çà
Marsh Posté le 13-01-2005 à 23:40:05
DesignPattern Stratégie : t'as une façade et derrière différentes implémentations aux comportements différents. Tu changes la partie arrière à ta guise (ici, désactivation de certaine méthodes) sans qu'en façade l'interface ne change.
Sinon, mon exemple, l'est pas bon pour toi ?
Marsh Posté le 13-01-2005 à 23:41:30
http://www.dofactory.com/Patterns/PatternStrategy.aspx
les exemples C# sont compréhensibles il me semble
Marsh Posté le 14-01-2005 à 17:03:20
Taz a écrit : |
ca fonctionne, mais c'est pas ce que je veux faire
Code :
|
ca marche, mais je veux me servir de ma classe NullHandler qui est fait pour çà, plutôt que d'être obligé de créer une nouvelle méthode null et de l'assigner à emit.
Citation : - rebelle : tu peux changer de __class__ à la volée |
self.__class__ = NullHandler
bha ca me va bien ca, hier j'ai pourtant testé et mon emit n'était plus appelé , mais là ca fonctionne nickel, ca risque rien de changer de classe comme ca ?
merci pour tout.
Marsh Posté le 14-01-2005 à 22:35:34
rebinder __class__ c'est plus compliqué ça. Et c'est pas très sur. Moi je te conseille de te pencher sur le Strategy Pattern
Marsh Posté le 13-01-2005 à 20:33:51
j'ai une classe de base Handler
ensuite j'ai une classe Null qui hérite de Handler.
mais qui change emit (surcharge c'est çà ?)
et une autre class Console qui hérite de Handler aussi.
et je captes pas comment faire pour surcharger les méthodes de la classe
Console par celle de Null à partir de Console.handleError, merci d'avance.