Je connais la plupart des tenants et aboutissants de l'approche de Python pour les variables privées/membres/fonctions/...Quelle est votre convention pour distinguer entre les méthodes objet appelées par l'extérieur et les méthodes objet appelées par une sous-classe?
Cependant, je n'arrive pas à faire la distinction entre les méthodes d'utilisation externe et les sous-classes. .
Prenons l'exemple suivant:
class EventMixin(object):
def subscribe(self, **kwargs):
'''kwargs should be a dict of event -> callable, to be specialized in the subclass'''
def event(self, name, *args, **kwargs):
...
def _somePrivateMethod(self):
...
Dans cet exemple, je veux préciser que souscrire est une méthode à utiliser par les utilisateurs externes de la classe/objet, alors que l'événement est une méthode qui devrait ne pas être appelé de l'extérieur, mais plutôt par des implémentations de sous-classes.
À l'heure actuelle, je considère les deux parties de l'API publique, par conséquent n'utilisez pas de traits de soulignement. Toutefois, pour cette situation particulière, il serait plus simple d'utiliser, par exemple, aucun caractère de soulignement pour l'API externe, un trait de soulignement pour l'API sous-classifiable et deux caractères de soulignement pour l'API privée/interne. Cependant, cela deviendrait difficile à manier car alors l'API interne aurait besoin d'être invoquée comme
self._EventMixin__somePrivateMethod()
Alors, quelles sont vos conventions, de codage sage, documentationwise, ou autrement?
Python ne prend-il pas en charge les membres protégés? Oo – OregonGhost
Le compilateur n'applique pas les membres protégés. C'est fait par convention seulement. –