如何解决是否可以继承不可变的日期类并重写__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\')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。