en outre écho à mike et alex, les conseils et l'ajout de ma propre couleur...
à l'aide de l'instance attributs typiques, plus idiomatiques Python. les attributs de classe ne sont pas souvent utilisés, du moins pas dans le code de production dans mon dernier de+ de 13 années consécutives de Python. la même chose est vraie pour la statique et les méthodes de la classe... juste pas très commun, sauf si il y a un cas d'utilisation spécifiques ou une aberrante programmeur désireux de montrer qu'ils savent quelque coin obscur de programmation Python.
alex mentionne dans sa réponse que l'accès sera (un peu) plus rapide en raison d'un moindre niveau de la recherche... permettez-moi de clarifier davantage pour ceux qui ne savent pas comment cela fonctionne encore, il est très similaire à la variable d'accès -- la recherche se passe dans cet ordre:
- les habitants
- les communautés non locales
- globals
- built-ins
pour l'attribut d'accès, la commande est:
- exemple
- classe
- les classes de base tel que déterminé par le MRO (méthode de résolution de l'ordre)
dans l'exemple ci-dessus, disons que vous êtes à la recherche de l' path
d'attribut. quand il rencontre une référence comme "self.path
", Python va regarder l'exemple des attributs première pour un match; quand cela échoue, il vérifie la classe dont l'objet est instancié à partir d'. enfin, il recherche les classes de base. comme alex l'a dit, si votre attribut est trouvé dans l'instance, il ne sera pas reporter à la classe, par conséquent, votre peu de gain de temps.
toutefois, si vous insistez sur les attributs de classe, vous aurez à renoncer à ce petit peu de performance, ouvotre autre alternative est de se référer à l'objet via la classe à la place de l'instance, par exemple, MyController.path
au lieu de self.path
. c'est une recherche qui permettra de contourner le report de la recherche, mais comme alex mentionne ci-dessous, qui est une variable globale, alors vous perdez le peu que vous pensiez que vous alliez à enregistrer (sauf si vous créez une référence locale à la [global] du nom de la classe).