是否可以继承不可变的日期类并重写__str__方法?

问题描述

| 我试图在Python中将不可变的
date
类子类化,但是我还需要重写
__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\')
构造函数工作正常,但是当我尝试打印对象时,ѭ1方法完全被忽略。我看到一些样本将其他不变类(例如
int
float
)子类化。他们都使用相同的约定。我想念什么吗? ѭ0对象有什么特别的地方吗? 更新: 代码似乎没有错。我试图在Django模板中打印
Year
对象,并且由于Django使用可本地化的格式
__str__
方法格式化
date
对象而被忽略了。     

解决方法

        在
__str__
方法中添加
return
。 更新: 我在计算机上运行了更新的代码,它运行良好:
aj@localhost:~/so/python# cat date2.py
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\')

y=Year(2011)
print str(y)
aj@localhost:~/so/python# python date2.py
2011
    ,        如果这是您的完整代码,那么您将缺少return语句:
def __str__(self):
    return self.strftime(\'%Y\')