Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interfaces

4 réponses
Avatar
BH
Bonjour,

J'ai pas mal cherché de documentation sur les interfaces de classes pour
python mais je n'ai pas trouvé grand chose.

Je souhaite donner à mon programme la possibilité d'accéder à plusieurs
types de fichiers différents mais pour que le format soit transparent je
dois créer des interfaces ... et je ne trouve pas bcp de documentation.

Merci !

4 réponses

Avatar
Bruno Desthuilliers
Bonjour,

J'ai pas mal cherché de documentation sur les interfaces de classes pour
python mais je n'ai pas trouvé grand chose.


Je suppose que tu penses à quelque chose dans le genre des interfaces de
Java ? Si oui, deux petites questions : à quoi sert ce concept en Java ?
Et à quoi servirait-il dans un langage à typage dynamique ?

Je souhaite donner à mon programme la possibilité d'accéder à plusieurs
types de fichiers différents mais pour que le format soit transparent je
dois créer des interfaces ...


Tu "dois" ? Pourquoi donc ?

et je ne trouve pas bcp de documentation.


Et pour cause...

class FileFoo(object):
def somemethod(self, ...):
# code here
def othermethod(self, ...):
# code here

class FileBar(object):
def somemethod(self, ...):
# code here
def othermethod(self, ...):
# code here

class FileQuux(object):
def somemethod(self, ...):
# code here
def othermethod(self, ...):
# code here

files = [FileFoo(), FileBar(), FileQuux()]
for f in files:
f.somemethod()
f.othermethod()


En clair : en Python, les interfaces sont implicites. Le mode de typage
de Python est souvent appelé 'Duck Typing' (typage canard), parce que
"si ça marche comme un canard et que ça fait coin-coin comme un canard,
alors c'est un canard"...

Ceci étant, il existe des bibliothèques proposant un concept d'interface
(voir du côté de Zope3 et Peak). Mais les motivations (et les
fonctionalités) sont autres que pour Java - essentiellement, il s'agit
soit de définir des points d'entrée pour des systèmes de plugin, soit de
permettre des "adaptations" (pattern adapter) automatiques.

Merci !


De rien.

Avatar
Méta-MCI
Bonjour !

en Python, les interfaces sont implicites (+ duck typing)




Et, ça semble tellement naturel à utiliser qu'on ne réalise même pas que
beaucoup de langages (connus) ne font pas pareil.

Je suis régulièrement étonné, en lisant des annonces de nouvelles versions
de langages (java ou C#, pour ne pas les nommer), qui présentent comme très
intéressantes, voir révolutionnaires, des aspects qui sont innés (ou
implicites) dans Python.

Je plains les développeurs qui sont obligés de travailler avec ces
langages... Mais, ça a au moins un avantage : les commerciaux qui vantent
des logiciels d'après le "nombre de lignes de code" voient leur discours
justifié.
Ils ne leur reste plus qu'à opter pour Intercal... ;o)

@+

MCI



Avatar
Méta-MCI
Re !

Je suis tombé sur un mot, pour qualifier les développeurs qui utilisent des
langages lourds et statiques (pléonasme ?) :

technomasochist

Désolé, c'est en anglais. Mais, je pense que le terme est bien approprié...

@-salutations

Michel Claveau
Avatar
Bruno Desthuilliers
Bonjour !

en Python, les interfaces sont implicites (+ duck typing)




Et, ça semble tellement naturel à utiliser qu'on ne réalise même pas que
beaucoup de langages (connus) ne font pas pareil.

Je suis régulièrement étonné, en lisant des annonces de nouvelles
versions de langages (java ou C#, pour ne pas les nommer), qui
présentent comme très intéressantes, voir révolutionnaires, des aspects
qui sont innés (ou implicites) dans Python.


Ca fait encore plus marrer les lispeurs.