Thank you for your inputs Dave. That's really helpful. Reply in-line below:
On Sun, Feb 10, 2013 at 11:56 PM, Dave Angel <da...@davea.name> wrote: > On 02/11/2013 12:14 AM, neubyr wrote: > >> I have a text file with each line in following format: >> >> Book Name, Author Name, Genre, Publication Date >> >> I would like to perform following queries on this file: >> * Get all books written by an author >> * Remove all books of an author >> * Get information about a book (pretty print matching line!) >> * Get books of particular genre >> >> Also, I would like to add and delete entries in this file. I am not >> planning to use any database for this purpose and would like to get better >> grasp on file parsing and classes/OOP. >> > > I take it from this that this is a class assignment, and that neither > speed nor enormous data capacity nor concurrent operation is a requirement. > But your professor may have other requirements that you haven't told us > about. Not a class assignment, just picked up this problem as a learning exercise. > > > I need some help in creating classes > >> and following are my initial thoughts: >> >> # Create a class for Book object >> class Book: >> atributes: name, author_name, genre, publication-date >> >> # Create >> Author: >> attribute(s): name >> > > Is this in order to save space, since each Book instance can then have a > reference to an Author object, rather than a reference to a string > containing the Author's name. > > If you deem this class useful, then don't you also want one for Genre ? Hmm.. I didn't think about saving space by reference an object. I created separate class thinking from database/ORM perspective. I am not planning to use it right now anyway, but if I was creating a non-trivial application with database models then I would have had Books tables, Authors tables etc.. I think I don't need it here though. > > > > >> # Create class for reading and writing to the file >> class Booksfile: >> methods: ?? >> > > Why ? Are you transliterating this from Java ? Scrapped that class - adding add/list/delete methods in Book class. Thanks for pointing it out. > > > >> >> * How do I associate/relate Book and Author classes so that it will help >> me >> in getting information like 'get list of books written by an author'? Data >> attribute? >> > > If performance doesn't matter, then create one list of Book instances, and > search it for whichever characteristics you like. > > > > * Should I create a new Booksfile object for reading, writing and deleting >> entries in the file OR add corresponding methods to the book object >> itself? >> > > Neither, a pair of regular functions will do fine. One that loads when > you start the program, and another that saves the file when you exit. If > you really expect to update the file incrementally, deleting entries in it, > then think hard about your decision to roll your own database. A text file > isn't random access. > > > >> I am not planning to use SQLite or any database and would like to use text >> file only. Appreciate any help on designing such application. >> >> >> > The real question is where you might proceed after meeting these first > requirements. For example, if you expect the list to grow to a few hundred > million entries, then you'll need to be very careful about layout. And > starting and exiting the program would be very slow, since you can do > nothing till all the data has been loaded in and converted to objects. > > Or perhaps you'll want to have another file with additional author data, > associated with the first by carefully spelling the author's name the same > in all cases. In that case, having a separate Author class makes great > sense. So if you expect to grow in that direction, then you should create > the class now, even though it has only one attribute. > > > -- > DaveA > > ______________________________**_________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor> > - N
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor