最終更新 10 months ago

此 Python 程式透過 LoggingMixin 提供日誌功能,TimestampMixin 管理時間標記,並應用於 User 類別,使其具備自動記錄變更歷史的能力,適用於用戶管理、數據追蹤等應用。

timmy revised this gist 10 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

logging_and_timestamp_mixin_example.py

@@ -28,7 +28,7 @@ class User(LoggingMixin, TimestampMixin):
28 28 def __init__(self, name):
29 29 super().__init__() # 確保 Mixin 初始化
30 30 self.name = name
31 - self.log(f"User '{self.name}' 已建立,創建時間: {self.created_at}")
31 + self.log(f"User '{self.name}' 已建立,建立時間: {self.created_at}")
32 32
33 33 def update_name(self, new_name):
34 34 self.log(f"名稱從 '{self.name}' 變更為 '{new_name}'")

timmy revised this gist 10 months ago. Go to revision

1 file changed, 41 insertions

logging_and_timestamp_mixin_example.py(file created)

@@ -0,0 +1,41 @@
1 + import datetime
2 +
3 + class LoggingMixin:
4 + """ 提供日誌功能的 Mixin 類別 """
5 +
6 + def log(self, message):
7 + """ 簡單的日誌紀錄方法 """
8 + timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
9 + print(f"[{timestamp}] {self.__class__.__name__}: {message}")
10 +
11 + class TimestampMixin:
12 + """ 提供時間標記功能的 Mixin 類別 """
13 +
14 + def __init__(self, *args, **kwargs):
15 + """ 設定物件的建立與更新時間 """
16 + self.created_at = datetime.datetime.now()
17 + self.updated_at = self.created_at
18 + super().__init__(*args, **kwargs)
19 +
20 + def update_timestamp(self):
21 + """ 更新 updated_at 時間 """
22 + self.updated_at = datetime.datetime.now()
23 + self.log(f"更新時間標記: {self.updated_at}")
24 +
25 + class User(LoggingMixin, TimestampMixin):
26 + """ 使用 LoggingMixin 和 TimestampMixin 的 User 類別 """
27 +
28 + def __init__(self, name):
29 + super().__init__() # 確保 Mixin 初始化
30 + self.name = name
31 + self.log(f"User '{self.name}' 已建立,創建時間: {self.created_at}")
32 +
33 + def update_name(self, new_name):
34 + self.log(f"名稱從 '{self.name}' 變更為 '{new_name}'")
35 + self.name = new_name
36 + self.update_timestamp()
37 +
38 + # 測試範例
39 + if __name__ == "__main__":
40 + user = User("Alice") # 會自動記錄 "User 'Alice' 已建立"
41 + user.update_name("Bob") # 會記錄名稱變更並更新時間標記
Newer Older