我想在Python中繼承不可變的date
類,但我也需要重寫__str__
方法。到目前爲止,我有以下幾點:是否可以繼承不變的日期類並覆蓋__str__方法?
from datetime import date
class Year(date):
def __new__(cls, year):
return super(Year, cls).__new__(cls, year, 1, 1)
def __str__(self):
return self.strftime('%Y')
構造函數工作正常,但是當我嘗試打印物體的__str__
方法完全忽略。我已經看到一些樣本繼承其他不可變類,如int
和float
。他們都使用相同的慣例。我錯過了什麼嗎? date
對象有什麼特別之處嗎?
更新:
看來代碼沒有問題。我試圖在Django模板中打印一個Year
對象,並且因爲Django使用可本地化的格式格式date
對象__str__
方法被忽略。
好吧,那只是一個複製/粘貼錯誤。我編輯了代碼。 – 2011-06-01 01:23:25
更新了我的答案 – 2011-06-01 01:26:07
你是對的,它正在工作。我正在使用Django模板打印這個值。顯然,它忽略了__str__方法。 – 2011-06-01 01:40:30