Le tutoriel sur le site Web Django affiche ce code pour les modèles: maintenant, chacun de ces attributs, est un attribut de classe, non? Donc, le même attribut doit être partagé par toutes les instances de la classe. Un peu plus tard, ils présentent ce code: p> Comment sont-ils passés d'attributs de classe par exemple des attributs? Ai-je tort d'attributs de classe? P> p>
4 Réponses :
C'est fait avec des métaclasses - des trucs très intelligents. Je recommanderais l'excellent livre Pro Django de Marty Alchin si vous voulez en savoir plus. P>
Regardez la classe code> modèle code> sous Django / dB / modèles.py. Là, les attributs de classe sont tournés vers des attributs d'instance via quelque chose comme one peut recommander le fichier complet ( modelbase code> et
modèle code> modèle code> un excellent exemple de mains sur les métaclasses. P> p>
dans Python, un attribut de classe est toujours un attribut d'instance:
class C(object): a = 1 def show_a(self): print self.a # <- works
une instance de classe a un espace de noms mis en œuvre comme un dictionnaire qui est la première place dans laquelle l'attribut Les références sont recherchées. P> blockQuote>