我想在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