我正在尝试替换日历模块中的两种方法:
import calendar
c = calendar.HTMLCalendar(calendar.MONDAY)
def ext_formatday(self, day, weekday, *notes):
if day == 0:
return '<td class="noday"> </td>'
if len(notes) == 0:
return '<td class="%s">%d<br /></td>' % (self.cssclasses[weekday], day)
else:
return '<td class="%s">%d<br />%s</td>' % (self.cssclasses[weekday], day, notes)
def ext_formatweek(self, theweek, *notes):
if len(notes) == 0:
s = ''.join(self.formatday(d, wd) for (d, wd) in theweek)
else:
s = ''.join(self.formatday(d, wd, notes) for (d, wd) in theweek)
return '<tr>%s</tr>' % s
c.formatday = ext_formatday
c.formatweek = ext_formatweek
print c.formatmonth(2012,1,"foobar")
这行不通 - 有人可以指点我相关文献或指出我做错了什么吗? 我正在尝试从以下线程中实现 Alan Hynes 的建议:thread 现在对我来说已经太晚了,我已经围绕这个问题思考了一个多小时。
提前致谢,
雅各布
请您参考如下方法:
尝试替换类中的方法而不是实例。
像这样:
import calendar
def ext_formatday(self, day, weekday, *notes):
if day == 0:
return '<td class="noday"> </td>'
if len(notes) == 0:
return '<td class="%s">%d<br /></td>' % (self.cssclasses[weekday], day)
else:
return '<td class="%s">%d<br />%s</td>' % (self.cssclasses[weekday], day, notes)
def ext_formatweek(self, theweek, *notes):
if len(notes) == 0:
s = ''.join(self.formatday(d, wd) for (d, wd) in theweek)
else:
s = ''.join(self.formatday(d, wd, notes) for (d, wd) in theweek)
return '<tr>%s</tr>' % s
calendar.HTMLCalendar.formatday = ext_formatday
calendar.HTMLCalendar.formatweek = ext_formatweek
c = calendar.HTMLCalendar(calendar.MONDAY)
print c.formatmonth(2012,1,"foobar")
