web-dev-qa-db-fra.com

Pourquoi Python n'est-il pas entièrement orienté objet?

Je veux savoir pourquoi Python n'est pas entièrement orienté objet. Par exemple, il ne prend pas en charge les modificateurs de niveau d'accès privés, publics et protégés.

Quels en sont les avantages et les inconvénients? Par ces expressions, Python convient à quelles applications (Desktop, Scientific, Web ou autre)?

51
Mehdi Amrollahi

Python ne prend pas en charge strong encapsulation, qui n'est qu'une des nombreuses fonctionnalités associées au terme "orienté objet".

La réponse est simplement la philosophie. Guido n'aime pas cacher des choses, et beaucoup dans la communauté Python sont d'accord avec lui.

85
Marcelo Cantos

Guido a dit un jour que "nous sommes tous des adultes consentants ici". Voici l'explication plus longue d'il y a longtemps: http://mail.python.org/pipermail/tutor/2003-October/025932.html

Il existe un accord qui souligne les éléments privés et vous ne devez pas les utiliser. À moins que vous ne sachiez ce que vous faites et que vous le vouliez vraiment.

Le lien mentionne également une autre façon de le mettre en cas de Perl:

"un module Perl préférerait que vous restiez hors de son salon
parce que vous n'étiez pas invité, pas parce qu'il a un fusil de chasse. "

42
viraptor

Les modificateurs d'accès (public, privé, protégé, etc.) ne sont pas requis pour programmation basée sur les classes . Ils ne sont qu'une fonctionnalité, comme héritage multiple .

12
Daniel Vassallo

Je pense que Python est conçu pour être un hybride. Vous pouvez écrire dans des styles orientés objet ou fonctionnels.

Les caractéristiques de l'orientation objet sont l'abstraction, l'encapsulation, l'héritage et le polymorphisme. Lesquels de ces éléments manquent dans Python?

L'orientation objet est un continuum. On pourrait dire que Smalltalk est le plus pur des purs, et tous les autres occupent des places différentes sur l'échelle.

Personne ne peut dire quelle est la valeur d'être pur à 100%. Il est possible d'écrire un très bon code orienté objet dans des langages qui ne sont pas Smalltalk, Python inclus.

Python est utile dans tous ces domaines: scientifique (NumPy), web (Django) et bureau.

3
duffymo

Je crois que Python est plus un langage très pratique et pragmatique.

Les concepts qui offrent de la valeur au développeur sont intégrés, sans trop de considération pour les concepts théologiques comme "bon OO design" et autres). C'est un langage pour les gens qui ont un vrai travail à faire.

Je pense que Python convient à toutes sortes d'environnements, bien que Desktop soit un peu difficile en raison de l'absence d'un cadre unique. Pour toutes les applications, il est pratique d'utiliser un cadre, comme NumPy pour les trucs de calcul , Twisted ou Django pour les trucs Web, et WxWidgets ou autres pour les trucs de bureau.

3
extraneon

Qu'est-ce qui est exactement orienté objet complet? Alan Kay a dit "En fait, j'ai inventé le terme" orienté objet ", et je peux vous dire que je n'avais pas C++ en tête.". Certes, il n'avait probablement pas non plus en tête python, mais il convient de noter que Smalltalk protège également les classes par convention, sans mandat).

1
deinst