class foo(HTMLCalendar):
def formatday(self, day, weekday, data):
if day==0
return '<td class="noday"> </td>'
else:
return '<td class="%s">%d %s</td>' % (self.cssclasses[weekday], day, data)
a = foo()
a.formatmonth(1, 2)
每当我尝试时,它都会给我一个错误,说formatday()正好需要4个参数(给定3个)。我试图覆盖formatday方法,以便我可以在其中放入一些数据。有人能告诉我我哪里做错了吗?
你这里的问题是formatmonth调用formatday,而你没有覆盖formatmonth,所以formatmonth使用formatday的常规参数,即只有day和weekday。
如果你不希望formatmonth的数据在那里,那么你可以给data一个默认值,例如:
class foo(HTMLCalendar):
def formatday(self, day, weekday, data=''):
if day==0: # note error here in original code
return '<td class="noday"> </td>'
else:
return '<td class="%s">%d %s</td>' % (self.cssclasses[weekday], day, data)
a = foo()
a.formatmonth(1, 2)
如果确实希望数据在那里,那么您的选项取决于该数据是什么。是否每个月的每一天都应该是相同的?如果是这样,那么您也可以覆盖formatmonth,或者您可以将数据作为实例变量,例如,从self.data
中获取数据,然后使用a.data = ...
进行设置。如果它每天都在变化,你可能应该让formatday从其他地方获取数据,而不是简单地把它作为一个参数。