zoukankan      html  css  js  c++  java
  • What next? ---class, def, pickle, dictionary, make a address book

    <A Byte of Python> Chapter 16. What next?

    Problem: create your own command-line address-book program using which you can add, modify, delete or search for your contacts such as friends, family and colleagues and their information such as email address and/or phone number. Details must be stored for later retrieval. 

    Hint.  Create a class to represent the person's information. Use a dictionary to store person objects with their name as the key. Use the cPickle module to store the objects persistently on your hard disk. Use the dictionary built-in methods to add, delete and modify the persons. 

    ab = {'Xiaopeng Yang': (18000001219, '18700000019@139.com')}
    del ab['Xiaopeng Yang']
    
    class AddressBook:
        '''Represents any information.'''
        def __init__(self, name, phonenumber):
            self.name = name
            self.phonenumber = phonenumber
            print '(Initialized AddressBook: %s)' %self.name
        def tell(self):
            '''Tell my details.'''
            print 'Name:"%s" Phone number:"%s"' % (self.name, self.phonenumber),
    
    class Friend(AddressBook):
        '''Represents a teacher.'''
        def __init__(self, name, phonenumber, emailaddress):
            AddressBook.__init__(self, name, phonenumber)
            self.emailaddress = emailaddress
            print '(Initialized Friend: %s)' % self.name
    
        def tell(self):
            AddressBook.tell(self)
            print 'Email address: "%s"' %self.emailaddress
            ab[self.name] = (self.phonenumber, self.emailaddress) # add friend information to dictionary
            
    class Family(AddressBook):
        def __init__(self, name, phonenumber):
            AddressBook.__init__(self, name, phonenumber)
            print '(Initialized Family: %s)' % self.name
    
        def tell(self):
            AddressBook.tell(self)
            ab[self.name] = (self.phonenumber,[])
            print #print s blank line
    
    class Colleague(AddressBook):
        def __init__(self, name, phonenumber, emailaddress):
            AddressBook.__init__(self, name, phonenumber)
            self.emailaddress = emailaddress
            print '(Initialized Colleague: %s)' % self.name
    
        def tell(self):
            AddressBook.tell(self)
            print 'Email address: "%s"' %self.emailaddress
            ab[self.name] = (self.phonenumber, self.emailaddress)
            print #print s blank line
             
    f = Friend('Qiping Kong', 1590100007, '000004369@qq.com') 
    a = Family('Haixia Li', 13522000000)
    c = Colleague('Maggie Zhang', 13000000827,'MZhang@mmmmmm.org')
    print #print s blank line
    
    members = [f, a, c]
    for member in members:
        member.tell() # works for Friend, Family and Colleague
    if 'Qiping Kong' in ab:
        print 'I am Qiping Kong, my phone numberis %d email is %s' % ab['Qiping Kong']
    
      
    for name, (phone, email) in ab.items():
        print 'Contact %s phone number is %d, email address is %s' % (name, phone, email)
    
    
    
    import cPickle as p
    #import pickle as p
    
    AddressListfile = 'AddressList.data' # the name of the file where we store the information
    
    AddressList = ab
    
    # Write to the file
    f = file(AddressListfile, 'w')
    c = p.dump(AddressList, f) #dump the object to a file
    f.close()
    
    del AddressList # remove the AddressList
    
    #Read back from the storage
    d = file(AddressListfile)
    shoredlist = p.load(d)
    print shoredlist

    Output:

    ================ RESTART: /Users/zhouxin/Desktop/What next.py ================
    (Initialized AddressBook: Qiping Kong)
    (Initialized Friend: Qiping Kong)
    (Initialized AddressBook: Haixia Li)
    (Initialized Family: Haixia Li)
    (Initialized AddressBook: Maggie Zhang)
    (Initialized Colleague: Maggie Zhang)

    Name:"Qiping Kong" Phone number:"1590100007" Email address: "000004369@qq.com"
    Name:"Haixia Li" Phone number:"13522000000"
    Name:"Maggie Zhang" Phone number:"13000000827" Email address: "MZhang@mmmmmm.org"

    I am Qiping Kong, my phone numberis 1590100007 email is 000004369@qq.com
    Contact Maggie Zhang phone number is 13000000827, email address is MZhang@mmmmmm.org
    Contact Qiping Kong phone number is 1590100007, email address is 000004369@qq.com
    Contact Haixia Li phone number is 13522000000, email address is []
    {'Maggie Zhang': (13000000827L, 'MZhang@mmmmmm.org'), 'Qiping Kong': (1590100007, '000004369@qq.com'), 'Haixia Li': (13522000000L, [])}
    >>>

  • 相关阅读:
    监听器
    事务
    DBUtils
    EL技术,JSTL技术与javaEE开发模式
    JSP技术
    Cookie and Session
    HttpServletRequest
    Servlet
    Http与Tomcat服务器的简单配置
    XML
  • 原文地址:https://www.cnblogs.com/XinZhou-Annie/p/7099244.html
Copyright © 2011-2022 走看看