I’m trying to replace two methods in calendar module:
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")
This won’t work – could somebody point me to relevant literature or point out what I’m doing wrong?
I’m trying to implement Alan Hynes suggestion from the following thread: thread
It way too late for me to think straight and I’ve been dancing around that problem for over an hour.
Thanks in advance,
Jakub
You don’t want to replace the methods; what Alan Hynes suggested was to subclass HTMLCalendar:
This will create a new derived class (MyCustomCalendar), which inherits all HTMLCalendar’s methods and attributes, but defines its own versions of
formatdayandformatweek.You can read more about Inheritance in the Python tutorial, or elsewhere on the web. It’s an important tool in Python (and object-oriented programming in general), and many libraries are designed around it.