2
私は変更履歴を追跡したいいくつかのクラス(連絡先など)を持っています。以下は私の出発点です。これは一般的な使用例だと思いますので、ここではベストプラクティスに関するガイダンスを参考にしてください。これは複数の継承を使用するのに適していますか?その外観はどうですか?「オブジェクト履歴」のPython継承のベストプラクティス
from datetime import date
class ContactHistory(object):
def __init__(self, contact, change_action, change_user_id, change_source):
self.name = contact.name
self.phone = contact.phone
self.email = contact.email
self.change_action = change_action
self.change_user_id = change_user_id
self.change_source = change_source
self.change_date = date.today()
def __repr__(self):
return '%s, %s, %s, %s, %s, %s, %s' % (self.name, self.email, self.phone, self.change_action, self.change_user_id, self.change_source, self.change_date)
class Contact(object):
def __init__(self, name, phone, email, change_user_id, change_source):
self.name = name
self.phone = phone
self.email = email
self.history = []
self.history.append(ContactHistory(self, 'created', change_user_id, change_source))
def update_phone(self, phone, change_user_id, change_source):
self.phone = phone
self.history.append(ContactHistory(self, 'phone updated', change_user_id, change_source))
def get_history(self):
return self.history
contact = Contact('Bill', '214-555-1212', 'me', 'admin page')
contact.update('972-555-1212', 'me', 'contact management page')
print contact.get_history()
おそらくhttp://stackoverflow.com/questions/8858525/track-changes-to-lists-and-dictionaries-in-pythonが重要です。 – larsks
@larsks ... @JackOfAllこのリンクには良いことがありますが、おそらくあなたは 'メモパターン 'を見たいと思っていますか?あなたが望むものは直接ではありませんが、そこから新しいアイデアを得るでしょうか? –