developpez en python
Pour moi un langage de programmation doit être très intuitif, super flexible, performant, et biensur avec des modules pour à peu près tout (3d, multithread, sockets ...). Maintenant si je vous dit qu'avec un seul langage vous pouvez utiliser des packages c, java, .net, compiler votre programme sur une JVM ou sur un CLR, ben oui le python peut faire tout cela, cependant le but de cet article et des articles qui suivront sera de mettre en valeur la flexibilité du python ... (pour ceux qui aiment se chamailler sur les langages, non merci ceci n'est pas le bon endroit, faites votre guerre ailleurs).
Le Python est à mon avis le langage le plus facile qui existe, remarque : personnellement j'ai attaqué directement le Django sans avoir de connaissance python, rien qu'en lisant les exemples Django, j'ai trouvé le langage très explicite, biensur au fûr est à mesure il a fallu lire un peu sur l'introspection, la métaprogrammation, le packaging .., c'est ce qui fait le point fort du langage, en plus du nombre de librairies et de documentations qui sortent chaque semaine.
Bref entrant dans le vif du sujet, Aujourd'hui je vais aborder les classes python.
Comme pour les autre langages toute classe hérite de la classe "object". Pour les attributs privés même s'ils sont rarement utilisés voici la syntaxe:
>>> class MaClasse(object):
... __attr = "private"
... attr2 = "public"
...
>>> MaClasse().attr2
'public'
>>> MaClasse().__attr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MaClasse' object has no attribute '__attr'
On peut tout de même accéder aux attributs privée avec : MaClasse()._MaClasse__attr
hmmm un héritage simple donnera:
>>> class Base(object):
... attr1 = "base"
... def __init__(self):
... print "classe de base"
... super(Base, self).__init__()
...
>>> class MaClasse(Base):
... attr2 = "extend"
... def __init__(self):
... print "classe fille"
... super(MaClasse, self).__init__()
...
>>> MaClasse()
classe fille
classe de base
<__main__.MaClasse object at 0xb7efa3cc>
Créer des propriétés et les surcharger :
>>> class Planete():
... def _get_couleur(self):
... return "Jaune"
... couleur = property(_get_couleur)
...
>>> class Mars(Planete):
... def _get_couleur(self):
... return "Rouge"
... couleur = property(_get_couleur)
...
>>> print Mars().couleur
Rouge
Créer une méthode de classe ou pour les habitués du Java une méthode static :
>>> class Connection():
... db = "myDataBase"
... @classmethod
... def set_db(cls, db):
... #une methode de classe prend en premier paramètre la classe en question.
... cls.db = db
...
>>> Connection.set_db("db2")
>>> print Connection().db
db2
Un petit truc sympa pour terminer:
>>> class MaClasse(object):
... #ajouter un attribut dynamiquement
... attr1 = "attribut a supprimer"
... def __init__(self):
... self.attr2 = "nouvel attribut"
...
>>> #supprimer un attribut dynamiquement
... del MaClasse.attr1
>>> print MaClasse().attr2
nouvel attribut
>>> print MaClasse().attr1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MaClasse' object has no attribute 'attr1'
sur les prochains articles j'aborderai ce que j'adooore le plus : "la métaprogrammation en python". Bonne journée.
Commentaires (5):
Je m'y metterai dès que j'aurais un peu de temps ;) promis.


Salut amine !
merci pour l'initiation PYTHON, on attend la métaprogrammation :)
Grand merci pour ces efforts @+