Kib's Memo

Articles extérieurs

Article numéro 11 écrit le jeudi 25 octobre 2007 à 23 h 22 min dans les catégories : Python Tutos Qt4

Des articles que j'ai aimé, ou que je me garde précieusement sous le coude le jour où j'arriverai à avoir le temps de lire calmement...

Parsing-Lexing

Plugins

Des articles sur la façon d'apporter de nouvelles fonctionnalités à une application.

  • Comment créer des plugins partie 1 pour un programme. Le procédé est simple, attention cependant car j'ai eû du mal à le faire fonctionner. L'article est écrit par un excellent programmeur Python, Armin Ronacher, un des créteurs de Pygments.
  • Comment créer des plugins partie 2 la suite du précédent qui aborde les choses différement. Il s'agit cette fois-ci d'utiliser setuptools pour étendre les capacités de nos applications. Ce que beaucoup de développeurs Python ont choisi.

Mixins

Certains trouvent cette technique peu conventionnelle, elle a en tout cas un mérite : elle fonctionne très bien. C'est une très bonne alternative au Plugins. Grossièrement, les classes Mixins permettent d'étendre une classe donnée en lui ajoutant des méthodes, le tout sans utiliser la dérivation.

Voici donc un exemple de ce que l'on peut faire :

class SomeMixin(object):
    def f(self, x):
        return self.y + x

class AnotherMixin(object):
    def g(self):
        print "g"


class Foo(object):
    mixin(SomeMixin)
    mixin(AnotherMixin)

    def h(self):
        print "h"

f = Foo()
f.y = 5
obj = Foo()
obj.y = 18
print dir(obj)
f.h()
print f.f(3)

En sortie, on obtiendra ceci

['__class__', '__delattr__', '__dict__', '__doc__',
'__getattribute__', '__hash__', '__init__', '__module__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__str__', '__weakref__', 'f', 'g', 'h']
h
8
g
  • Je vous laisse découvrir ceci dans les recettes de Sebulba . A noter une toute petite implémentation des mixins en deux lignes de code ! Préférez cependant real mixins que vous trouverez en bas de page.
  • Une autre implémentation existe, elle est tout aussi puissante, voire plus encore. Il s'agit du package MOPPY qui signifie Meta Object Programming in Python. Le code source est d'un niveau élévé, mais il est vraiment très clair et structuré. Je vous laisse par exemple lire les sources du fichier principal mop.py ou vous trouverez à la fin les fonctions addMixIn et removeMixin.
  • Enfin, une dernière utilisée dans un éditeur écrit avec wxPython et ayant fait ses preuves est celle de Limodou pour Mixin.py.

PyQt4

  • De très bons articles ici on y apprend pas mal de choses sur PyQt4 et on est pris par la main pour créer 2 petites applications. Seule chose regrettable : il a piqué mon tuto sur QScintilla2 sans mon autorisation, mais bon... c'est pour la bonne cause !
Commentaires (Voir)