带有多个参数的__init__方法

时间:2017-08-20 10:31:41

标签: python python-2.7

我确实创建了一个新的datetime.date对象

class WorkDate(datetime.date):
    pass

WorkDate的功能是(对此问题不重要),当您添加timedelta对象时,它只会移至工作日日期。即,当您在星期五timedelta(1)上添加WorkDate时,它将在下一个星期一返回WorkDate

<小时/> 我如何通过这两种方法中的任何一种__init__ WorkDate来创建相同的结果

x = WorkDate(2017, 8, 3)
y = WorkDate(datetime.date(2017, 8, 3))

<小时/> 我试过这个,但没有使用日期对象

进行初始化
class WorkDate(datetime.date):
    def __init__(self, *args):
        if len(args) == 3:
            super(WorkDate, self).__init__(args[0], args[1], args[2])
        elif len(args) == 1:
            self.year = args[0].year
            self.month = args[0].month
            self.day = args[0].day

1 个答案:

答案 0 :(得分:-1)

由于您希望支持任意数量的参数,请接受*args

然后,在__init__中,将这些传递给基类的__init__

def __init__(*args):
    super(WorkDate, self).__init__(*args)

这是Python 3的一个版本,增加了对命名(关键字)参数的支持`** kwargs':

def __init__(*args, **kwargs):
    super().__init__(*args, **kwargs)