Python n'est pas conçu pour éviter quoique ce soit (sauf si c'est "proposer plusieurs façons de faire la même chose).
Python n'a pas de notion de privé ou de protected.
ask for forgiveness and not for permission donc oui. De toutes façons tu ne vas mettre la gestion de l'exception dans la classe...Car si l'exception se déclenche tu renvoies quoi???Le truc c'est que les exceptions faut les faire à chaque fois que tu as besoin de l'objet non
On ne fait PAS de set/get pour accéder à des données membre d'une classe en python car ce n'est pas du tout dans l'esprit du langage.
Python laisse faire le programmeur. Si on veut faire n'importe quoi en python on peut.
a = 1
b = 2
a = "foo"
c'est valide mais c'est n'importe quoi.
Le duck typing apporte aussi une immense souplesse. Si un objet sais faire ce qu'on attend de lui, pourquoi le rejeter? Le système de type/héritage/template du C++ résout plus ou moins le problème mais d'une façon ultra complexe. Python voit ça d'une façon très pragmatique : si ça sait faire coin coin alors c'est un bon canard.