Python簡易通信録プログラム
2818 ワード
一部の人の名前と電子メールアドレスを記録できる簡単な通信録コードです. Contactクラスは、クラス変数のすべての連絡先のリストを維持し、名前とemailアドレスを初期化します. ContactListクラスは、内蔵されたlistクラス(listクラスのsearch()メソッド)を拡張することによって、通信録を検索する機能を実現する. Supplierクラスはベンダーを代表し、Contactクラスを継承します.なぜContactクラスにorder関数を直接追加せずに新しいクラスを作成するのですか?これにより、仕入先と一般の連絡先を区別し、誤操作を避けることができるからです. FriendクラスはContactクラスを継承し、initを書き換え、super関数で親クラスを直接呼び出す方法である.
主な知識点のまとめ:クラスに新しいメソッドを追加する必要がある場合は、このメソッドを提供できる組み込みクラスがあるかどうかを考え、ある場合は、組み込みクラスを拡張することでこのメソッドを実現し、不要なコード量を減らすことができます. 書き換えは、サブクラス(スーパークラスと同じ名前の)新しい方法でスーパークラスのこの方法を変更または上書きすることである.これを行うには、特別な構文は必要ありません.スーパークラスのメソッドではなく、サブクラスが新しく作成されたメソッドが自動的に実行されます.どんな方法でも書き直すことができます. super関数は、親のインスタンス化オブジェクトを返す親コードを呼び出す方法を提供します.
参考資料:『Python 3オブジェクト向けプログラミング』Dusty Philips著
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
主な知識点のまとめ:
参考資料:『Python 3オブジェクト向けプログラミング』Dusty Philips著