Chris Hengge wrote: > I guess I'm just lost as to the point of classes... Outside of using > them to abstract a collection of methods that have similair roles I > dont see the point.. But when I group similar methods together > (promptForge is a bad example, but I've got class fileForge which has > a few file writing or reading methods), people tell me its overkill > (basicaly) =P Have you tried reading Alan Gauld's tutorial on classes? I'm sure he explains their purpose quite well.
Classes can be used to group similar methods together, but so can modules, and that's usually what people do. the point in using classes is when you have similar functions all operating on a single set of data. that's the key. If you find yourself calling the functions and passing in arguments, you're probably doing it wrong :) Something like this #proc.py class ProcessFile(object): def input_file(self): f = file(filename) self.text = f.readlines() f.close() def __init__(self,filename): self.filename = filename input_file() def display_filename_and_contents(self): print "Filename: %s" % self.filename print "Contents:" for line in self.text: print line.strip() print "END.\n\n" def change_file(self,filename): self.filename = filename input_file() #input1.txt I am a cat. What is the plural of Syllabus? Can the penguin wear the hat, mommy, please? That walrus looks absurdly skinny. It weighs 800 pounds! That's not so much.... for a walrus. #input2.txt What... is the air-speed velocity of an unladen swallow? African or European? #<(-_- )----> and so endeth the example codeth. Now you can easily do something like this (in proc.py as well) myfile = ProcessFile('input1.txt') myfile.display_filename_and_contents() myfile.change_file('input2.txt') myfile.display_filename_and_contents() will give you an output like this: Filename: input1.txt Contents: I am a cat. What is the plural of Syllabus? Can the penguin wear the hat, mommy, please? That walrus looks absurdly skinny. It weighs 800 pounds! That's not so much.... for a walrus. END. Filename: input2.txt Contents: What... is the air-speed velocity of an unladen swallow? African or European? END. See, the main idea here is that, because these functions operate on the same dataset, you give them all equal access to the data by putting them in a class and making the data attributes of the class. For example, view the input_file function. It doesn't need you to tell it what the filename is, because it gets it from the instance variable self.filename It doesn't need to return a value because it sticks the inputted text into self.text() Now a self.text() file exists that contains the text of the file. If you weren't doing this in a class, and you wanted multiple functions to act upon the contents of a file, you'd do something like f = file('input1.txt') text = f.readlines() f.close() function1(text) function2(text) function3(text) etc. Now, if these were all in a class, you could just have an instance variable self.text that contains the data in the class, and you wouldn't have to pass this to every function. HTH, -Luke _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor