Python简单通信录程序

一个简单的通信录代码,这个通信录可以记录一些人的姓名和电子邮件地址。

  • Contact类负责维护一个类变量中所有联系人的列表,并且初始化姓名和email地址。

  • ContactList类通过扩展内置的list类(用list类的search()方法)实现了搜索通信录的功能。

  • Supplier类代表供应商,继承了Contact类。
    为什么不直接在Contact类增加order函数而要建一个新类?因为这样可以将供应商和普通联系人区分开,避免误操作。

  • Friend类继承了Contact类,重写了init,并且用super函数直接调用父类的方法。

class ContactList(list):
    def search(self, name):
        matching_contacts = []
        for contact in self:
            if name in contact.name:
                matching_contacts.append(contact)
            return matching_contacts

class Contact:
    all_contacts = ContactList()

    def __init__(self, name, email):
        self.name = name
        self.email = email
        self.all_contacts.append(self)

class Supplier(Contact):
    def order(self, order):
        print("If this were a real system we would send"
              "{0} order to {1}".format(order, self.name)) 

class friend(Contact):
    def __init__(self, name, email, phone):
        super().__init__(name, email)
        self.phone = phone

主要知识点总结:

  • 需要为一个类添加新方法时,想想有没有一个内置类能提供此方法,若有,可以通过扩展内置类实现这个方法,减少不必要的代码量。

  • 重写就是在子类里用一个(和超类相同名字的)新的方法来改变或者覆盖超类里的这个方法。做这个不需要特殊的语法,会自动执行子类新创建的方法而不是超类的方法。任何方法都可以被重写。

  • super函数提供了一种可以调用父类代码的方法,它返回一个父类的实例化对象。

参考资料:《Python 3面向对象编程》 Dusty Philips著

你可能感兴趣的:(python面向对象)