Bonjour à tous,
J'essaye de traduire en python les exemples JAVA du livre "design
patterns tête la première" pour le pattern statégie.
Auriez vous des exemples d'implémentation de ce pattern en Python ?
En Java le code source fait apparaitre sur une classe abstraite
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior
Des références à une autre interface
Comment faire ca avec zope interface ?
Extrait de mon code :
import zope.interface
class IComportementVol(zope.interface.Interface):
"""Interface de comportment de vol"""
def voler():
""" méthode voler pour un canard"""
class VolerAvecDesAiles(object):
zope.interface.implements(IComportementVol)
def voler(self):
print "je vole"
class NePasVoler(object):
zope.interface.implements(IComportementVol)
def voler(self):
print "je ne sais pas voler"
class IComportementCancan(zope.interface.Interface):
"""Interface de comportment de cancan"""
def cancaner():
""" methode cancaner pour un canrd """
class Cancan(object):
zope.interface.implements(IComportementCancan)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Desthuilliers
Bonjour à tous, J'essaye de traduire en python les exemples JAVA du livre "design patterns tête la première" pour le pattern statégie. Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior
Des références à une autre interface Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement): def __call__(self, *args, **kwargs): print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement): def __call__(self, *args, **kwargs): print "%s est muet" % self._obj.name
class Canard(object): def __init__(self, name, voler=None, cancanner=None): self.name = name self.vole = voler is not None and voler(self) or Comportement(self) self.cancanne = cancanner is not None and cancanner(self) or Comportement(self)
def coincoin(): daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard) donald = Canard('donald')
print "Mmm... pas au point. Essayons encore :" donald.vole = VoleCommeUnCanard(donald) donald.cancanne = CancanneCommeUnCanard(donald) donald.vole() donald.cancanne()
print "hebinvoila ! coincoincoin !-)"
if __name__ == '__main__': coincoin()
Bonjour à tous,
J'essaye de traduire en python les exemples JAVA du livre "design
patterns tête la première" pour le pattern statégie.
Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce
Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior
Des références à une autre interface
Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement):
def __call__(self, *args, **kwargs):
print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement):
def __call__(self, *args, **kwargs):
print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement):
def __call__(self, *args, **kwargs):
print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement):
def __call__(self, *args, **kwargs):
print "%s est muet" % self._obj.name
class Canard(object):
def __init__(self, name, voler=None, cancanner=None):
self.name = name
self.vole = voler is not None and voler(self)
or Comportement(self)
self.cancanne = cancanner is not None and cancanner(self)
or Comportement(self)
def coincoin():
daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard)
donald = Canard('donald')
Bonjour à tous, J'essaye de traduire en python les exemples JAVA du livre "design patterns tête la première" pour le pattern statégie. Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior
Des références à une autre interface Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement): def __call__(self, *args, **kwargs): print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement): def __call__(self, *args, **kwargs): print "%s est muet" % self._obj.name
class Canard(object): def __init__(self, name, voler=None, cancanner=None): self.name = name self.vole = voler is not None and voler(self) or Comportement(self) self.cancanne = cancanner is not None and cancanner(self) or Comportement(self)
def coincoin(): daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard) donald = Canard('donald')
print "Mmm... pas au point. Essayons encore :" donald.vole = VoleCommeUnCanard(donald) donald.cancanne = CancanneCommeUnCanard(donald) donald.vole() donald.cancanne()
print "hebinvoila ! coincoincoin !-)"
if __name__ == '__main__': coincoin()
jeanmarc.pouchoulon
Super je regarde ca Merci
saturnin
Bonjour à tous, J'essaye de traduire en python les exemples JAVA du livre "design patterns tête la première" pour le pattern statégie. Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior
Des références à une autre interface Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement): def __call__(self, *args, **kwargs): print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement): def __call__(self, *args, **kwargs): print "%s est muet" % self._obj.name
class Canard(object): def __init__(self, name, voler=None, cancanner=None): self.name = name self.vole = voler is not None and voler(self) or Comportement(self) self.cancanne = cancanner is not None and cancanner(self) or Comportement(self)
def coincoin(): daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard) donald = Canard('donald')
print "Mmm... pas au point. Essayons encore :" donald.vole = VoleCommeUnCanard(donald) donald.cancanne = CancanneCommeUnCanard(donald) donald.vole() donald.cancanne()
print "hebinvoila ! coincoincoin !-)"
if __name__ == '__main__': coincoin()
Super je regarde ca Merci
saturnin
Bonjour à tous,
J'essaye de traduire en python les exemples JAVA du livre "design
patterns tête la première" pour le pattern statégie.
Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce
Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior
Des références à une autre interface
Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement):
def __call__(self, *args, **kwargs):
print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement):
def __call__(self, *args, **kwargs):
print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement):
def __call__(self, *args, **kwargs):
print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement):
def __call__(self, *args, **kwargs):
print "%s est muet" % self._obj.name
class Canard(object):
def __init__(self, name, voler=None, cancanner=None):
self.name = name
self.vole = voler is not None and voler(self)
or Comportement(self)
self.cancanne = cancanner is not None and cancanner(self)
or Comportement(self)
def coincoin():
daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard)
donald = Canard('donald')
Bonjour à tous, J'essaye de traduire en python les exemples JAVA du livre "design patterns tête la première" pour le pattern statégie. Auriez vous des exemples d'implémentation de ce pattern en Python ?
Il y en a un (un peu javaesque AMHA) dans Thinking in Python de Bruce Eckel (librement disponible en ligne sur le site de l'auteur)
En Java le code source fait apparaitre sur une classe abstraite public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior
Des références à une autre interface Comment faire ca avec zope interface ?
Inutile. Puisqu'on est dans les canards, autant utiliser le typage éponyme:
class VoleCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s vole comme un canard" % self._obj.name
class NeVolePas(Comportement): def __call__(self, *args, **kwargs): print "%s ne vole pas" % self._obj.name
class CancanneCommeUnCanard(Comportement): def __call__(self, *args, **kwargs): print "%s fait coin coin" % self._obj.name
class NeCancannePas(Comportement): def __call__(self, *args, **kwargs): print "%s est muet" % self._obj.name
class Canard(object): def __init__(self, name, voler=None, cancanner=None): self.name = name self.vole = voler is not None and voler(self) or Comportement(self) self.cancanne = cancanner is not None and cancanner(self) or Comportement(self)
def coincoin(): daffy = Canard('daffy', VoleCommeUnCanard, CancanneCommeUnCanard) donald = Canard('donald')