我试图根据传递的pd.Series将calendar
模块扩展到颜色日,其索引是日期,其值是颜色代码(0到10)。
我没有足够深入OOP来做到这一点。 The TextCalendar
class有一个方法formatyear
,反过来称为formatweek
方法。
我目前的解决方案是定义一个class ColoredTextCalendar(TextCalendar)
,其__init__()
设置一个类属性date_to_color
(一个pandas系列颜色代码,日期作为索引)。然后我基本上复制并粘贴了原始的formatyear
和formatweek
方法,并且只改变了两三行:formatyear
现在用formatweek
和year
附加参数调用month
,这样这个方法就知道它格式化的实际日期(之前它只打印了像12 13 14 15 16 17 18
这样的7天日历周。 formatweek
现在在其类属性date_to_color
中查找相应的颜色代码,并相应地为每一天的字符串着色。
我正在做什么工作,但感觉不对,就像应该有一个更简单,更直接的解决方案。复制并粘贴一个很长的方法只改变几行感觉不对 - 这不是你通常做OOP的方式,对吧?
如何覆盖的示例:
class Base:
def foo(self, x):
x += 1
x += 2
x += 3
鉴于这个简单的基类,我想覆盖中间的x + = 2行
像这样重写你的父方法
class Base:
def foo(self, x):
x += 1
self.bar(x)
x += 3
def bar(self, x):
x += 2
class Child(Base):
def bar(self, x):
# my new code
你需要在你的方法中使用非定义数量的参数* args和** kwargs看到这个*args and **kwargs?