唯讀屬性
第 2 章的 LoggedDF 類別是 pandas 的 DataFrame 子類別,另外加上了一個 created_at 屬性,用來記錄 DataFrame 建立的時間戳記,讓使用者知道資料是否過時。
但那個類別其實不太實用:因為我們可以在 DataFrame 建立後,隨意指定任何值給 created_at,整個屬性的意義就被破壞了!現在,透過 properties,就能把這個屬性改成唯讀。
第 2 章的 LoggedDF 類別已經幫你放在腳本窗格中可以使用。
本練習屬於課程
Python 物件導向程式設計
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
import pandas as pd
from datetime import datetime
# LoggedDF class definition from Chapter 2
class LoggedDF(pd.DataFrame):
def __init__(self, *args, **kwargs):
pd.DataFrame.__init__(self, *args, **kwargs)
self.created_at = datetime.today()
def to_csv(self, *args, **kwargs):
temp = self.copy()
temp["created_at"] = self.created_at
pd.DataFrame.to_csv(temp, *args, **kwargs)
# Instantiate a LoggedDF called ldf
ldf = LoggedDF({"col1": [1,2], "col2":[3,4]})
# Assign a new value to ldf's created_at attribute and print
____ = ____
print(____)