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的数据在那里,那么您可以给数据一个默认值,例如:
如果你想要数据在那里,那么你的选择取决于数据是什么。这个月的每一天都应该是一样的吗?如果是这样,那么您也可以重写formatmonth,或者将数据作为一个实例变量,例如,从
self.data
获取它,然后用a.data = ...
进行设置。如果它每天都在变化,您可能应该让formatday从其他地方获取数据,而不是简单地将其作为参数。在一般来说,用一个需要额外参数或具有一些不兼容API的方法重写方法是危险的。任何不重写的调用该方法的操作都将中断。在
相关问题 更多 >
编程相关推荐