[Tutor] question about class

Alan Gauld alan.gauld at btinternet.com
Tue Jun 9 21:38:59 CEST 2009


"Vincent Davis" <vincent at vincentdavis.net> wrote 

> Here is the start of my Applicant Class

class Applicant(object):
      "quality is refers to the quality of the Applicant
          observe refers to the accuracy of which they assess the
quality of the school"

I guess you intended those to be triple quotes?

      def __init__(self, quality = 0, observe = 0):
              self. quality = quality
              self. observe = observe
      def Quality(self, mean, sd):
              print self,
              self.quality = normalvariate(mean, sd)
              print "--> %s" % self
     
Its normal to use lowercase letters to start a method name. 
ot needed but convention. But of course you'd need to change 
the name to avoid conflicts with the attribute.

Do you really want to priont self? That will say something 
like "<main.Applicant instance at...>"

You could however provide a __str__ method that will print out 
what you do want to see.

       def Observe(self, mean, sd):
              print self,
              self. observe = normalvariate(mean, sd)
              print "--> %s" % self

> Or I could I guess do it this way, Is this better? I will only be
> setting the quality and observe values once for each instance.

This is a class with only an __init__ method, that's usually a 
suspicious sign. What does the class do?

BTW its also unusual to have verbs as attributes. (Unless 
they are boolean flags and even then its better to make it 
a question eg. doesObserve. Should your self.observe be
self.observation say?


-- 
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list