james_027 a écrit : > hi everyone, > > I am now in chapter 5 of Dive Into Python and I have some question > about it. From what I understand in the book is you define class > attributes & data attributes like this in python
s/data/instance/ > class Book: > > total # is a class attribute > > def __init__(self): > self.title # is a data attributes > self.author # another data attributes > > To define class attributes is like defining a function in class, to > define a data attributes is defining a variable inside the __init__ > method. > > what makes me confuse is this model from Django > > from django.db import models > > class Person(models.Model): > first_name = models.CharField(maxlength=30) > last_name = models.CharField(maxlength=30) > > I believe the first_name and last_name are data attributes? but why it > is they look like a class attributes as being define. first_name and last_name are actually class attributes. AFAICT, they are descriptors[1] controlling access to the resultset returned by the db query. [1] cf the doc for the descriptor protocol on python.org. This is the feature that - amongst other things - allow Python to have a support for 'computed attributes' (aka properties). HTH -- http://mail.python.org/mailman/listinfo/python-list