Et non, la portée n'a rien à voir avec l'orienté objet : Python est un des langages qui éxagèrent le plus sur l'orienté objet, et pourtant il n'a pas de portée.
Je sentais venir l'argument Python ^^
Python n'est peut-être pas le meilleur exemple (enfin, ça dépend ce que tu souhaites montrer). C'est un langage très permissif, laissant une latitude maximale au programmeur. On pourrait presque dire que Python viole certains principes de base de l'OOP comme l'encapsulation avec une API sans accès à l'implémentation, le rajout de membre à une instance à la volée, etc.
D'autre part, il y a quand même une notion de portée en Python mais elle est beaucoup moins stricte que celle qu'on avoir en C par exemple. J'ai moi-même été surpris du résultat affiché par f() :
$ cat test.py
a = 2
def f():
print a
f()
def g():
a = 42
print a
g()
print a
$ python test.py
2
42
2
$
Enfin, je ne pense pas que Python soit le langage qui exagère le plus l'orienté-objet : tu peux écrire du code sans faire de classe. En revanche, c'est impossible en Java : il te faut forcer une classe qui va contenir le main().
Partager