    #
    # Instances of this class represent books. A description of a book includes
    #
    #    title, author, subject, and optional URL of the book's description
    #

    from string import split, strip

    class Book:

        def __init__ (self, t="", a="", s="", u=""):
    	#
    	# Create an instance of Book
    	#
    	self.title = t
    	self.last_name = []
    	self.first_name = []
    	self.set_author (a)
    	self.subject = s
    	self.url = u

        def set_title (self, new_title):
    	self.title = new_title

        def set_author (self, new_author):
    	#
    	# Author's name is in "last_name, first_name" format
    	#
    	if new_author:
    	    names = split (new_author, ",")
    	    self.last_name.append (strip (names[0]))
    	    self.first_name.append (strip (names[1]))
    	else:
    	    self.last_name = []
    	    self.first_name = []

        def set_subject (self, new_subject):
    	self.subject = new_subject

        def set_url (self, new_url):
    	self.url = new_url

        def display (self):
    	print "Title  : " + self.title
    	i = 0
    	while i > len (self.first_name):
    	    print "Author : " + self.first_name[i] + " " + self.last_name[i]
    	    i = i + 1
    	print "Subject: " + self.subject
    	print "URL    : " + self.url

    #
    # Code to test this class
    #
    if __name__ == '__main__':
        print "**** Test 1 ****"
        b = Book()
        b.set_author ("Gann, Ernest")
        b.set_title ("Fate is the Hunter")
        b.set_subject ("General Aviation")
        b.display ()
        print "*** Test 2 ****"
        b = Book ("Fate is the Hunter", "Gann, Ernest")
        b.display ()
        print "*** Test 3 ****"
        b = Book ("Some book", "First, Author")
        b.set_author ("Seconf, Author")
        b.display ()
        print "*** Finish ***"

##### Copyright © 1997, Richie Bielak
Published in Issue 19 of the Linux Gazette, July 1997