Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > class attributes & data attributes

Reply
Thread Tools

class attributes & data attributes

 
 
james_027
Guest
Posts: n/a
 
      06-20-2007
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

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.

Thanks in advance for explaining

james

 
Reply With Quote
 
 
 
 
Diez B. Roggisch
Guest
Posts: n/a
 
      06-20-2007
james_027 wrote:

> 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
>
> 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 of all, the common term for what you call a data attribute is
is "instance attribute".

Furthermore - you're right and wrong.

The django-code above defines a model class, which has some class-attributes
declaring the fields the database shall have. and the instances as well!

So while the above clearly are class attributes, the ORM runtime of django
will create instances of that class that have instance attributes of the
same name.

Something along these lines (albeit a contrived example):

class Foo(object):
bar = "baz"

def __init__(self):
for name, value in self.__class__.__dict__.items():
if isinstance(value, str):
setattr(self, name, "some other value")

f = Foo()
print f.bar

Which should result in "some other value". But it's untested code above.

Diez
 
Reply With Quote
 
 
 
 
Bruno Desthuilliers
Guest
Posts: n/a
 
      06-20-2007
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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
data attributes override method attributes? Jayden Python 16 09-29-2012 03:20 AM
Class A contains class B, class B points to class A Joseph Turian C++ 5 12-30-2005 03:24 PM
Nested Class, Member Class, Inner Class, Local Class, Anonymous Class E11 Java 1 10-12-2005 03:34 PM
Public Data in Private Class or Private Data in Public Class? DaveLessnau C++ 3 05-16-2005 06:53 PM
A parameterized class (i.e. template class / class template) is not a class? christopher diggins C++ 16 05-04-2005 12:26 AM



Advertisments