我正在尝试根据传递的pd.Series将calendar
模块扩展为彩色日,该系列的索引是日期,其值是颜色代码(0到10)。
我对OOP不够深入。 The TextCalendar
class具有方法formatyear
,该方法依次调用方法formatweek
。
我当前的解决方案是定义一个class ColoredTextCalendar(TextCalendar)
,其__init__()
设置一个类属性date_to_color
(熊猫颜色代码系列,日期作为索引)。然后,我基本上复制并粘贴了原始的formatyear
和formatweek
方法,并只更改了其中的两三行:formatyear
现在调用带有附加参数{{ 1}}和formatweek
,以便此方法知道它格式化的实际日期(以前它只是打印了一个7天的日历周,如year
)。现在month
在其类属性12 13 14 15 16 17 18
中查找相应的颜色代码,并相应地为每天的字符串着色。
我正在做的工作是什么,但感觉是错误的,例如应该有一个更简单,更直接的解决方案。复制粘贴一个很长的方法并只更改几行感觉不对-这不是您通常的OOP操作方式,对吗?
答案 0 :(得分:0)
如何覆盖示例:
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?