[Tutor] question about class

Vincent Davis vincent at vincentdavis.net
Tue Jun 9 15:02:28 CEST 2009


Thanks for the help and comments, I think my questions have been
answered, I will know if I understand when I try to implement them.
The Match algorithm. algorithm is described in the link below. The
Applicant and School rankings will be (Attributes ?) of the Applicant
and School class, and I simulate this ranking process by considering
Applicants and Schools attributes, but basically similar qualities get
mutually ranked. (I go go on if someone is interested but I thought it
best to keep the discution on what I am trying to learn about classes)

http://www.nrmp.org/res_match/about_res/algorithms.html

Thanks Again
Vincent Davis




On Tue, Jun 9, 2009 at 1:12 AM, spir<denis.spir at free.fr> wrote:
> Le Mon, 8 Jun 2009 17:31:23 -0600,
> Vincent Davis <vincent at vincentdavis.net> s'exprima ainsi:
>
>> Accidentally sent I have added the rest
>> (by the way I refrain from using the terms attribute, method,.... as I
>> will likely miss use them)
>>
>> > I am reading several tutorials about classes and trying to figure out
>> > how to apply it to my project. I have a working program that basically
>> > matches up applicants and schools. Schools and applicants have and
>> > "true" quality and an "observed" quality. Then there is an algorithm
>> > that matches them up. Right now I do this all with lists which works
>> > ok but I would like to try using classes.
>
>> > Questions
>> > 1, does it make seens to have a applicant and a schools class (based
>> > on this brief explanation)
>
> Based on your explanations, I don't really understand the problem you're trying to solve, nore the algorithm. Still, probably it makes sense to use Applicant and School classes for the simple reason these notions in your program represent "objects": there are single, identified, things ; as opposed to "values" (in the ordinary sense of the term) that represent qualities or information such as color, position, number, or "true" and "observed" above.
> (By the way, don't use 'true', it's too misleading. Maybe 'truth' instead.)
>
> This notion of object identity would allow you, for instance, to match an applicant to a school by letting the applicant's attribute 'matched_school' directly point to a school itself, instead of a number that indirectly represents the school.
>
> Also, you've got a collection of schools and applicants, which probably means they will be stored in a set or a list. Once you have a type for them, it's easier to safely manipulate them in a unified manner. Even if they have only one single data attribute, I would do it: this also brings a centralised place to expose the object type's structure and behaviour.
>
>> > 2, is it possible to have a class for the algorithm that will modify
>> > values in the applicant and schools class
>> for example applicant.matched = 4 and school.matched = 343 meaning
>> applicant 343 is matched to school 4
>
> No, if I understand what you mean. You won't have a separate "class" only to store actions (python is not java), but instead you should precisely attribute these as methods to the Applicant or School types.
>
>> 3, is I have a value set in a class applicant.foo = 5 and I what to
>> use a (method?) in the class to change this, what is the right way to
>> do this?
>
> Below an example:
>
> ====================
> class Point(object):
>        def __init__(self, x=0,y=0):
>                self.x = x
>                self.y = y
>        def move(self, dx,dy):
>                print self,
>                self.x += dx
>                self.y += dy
>                print "--> %s" % self
>        def __str__(self):
>                return "Point (%s,%s)" % (self.x,self.y)
>
> p0 = Point() ; print p0
> p = Point(9,8) ; print p
> p.move(-11,11)
> ====================
> ==>
> ====================
> Point (0,0)
> Point (9,8)
> Point (9,8) --> Point (-2,19)
> ====================
>
> Denis
> ------
> la vita e estrany
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list