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著