Others constructors...

Peter Otten __peter__ at web.de
Wed Sep 24 15:26:07 EDT 2003


Batista, Facundo wrote:

> Studying the module datetime, found that you can create a date instance
> like:
> 
> mydate = datetime.date(2003, 9, 15)
> 
> but also you have others constructors. For example:
> 
> mydate = datetime.date.today()
> 
> How is this trick implemented in Python? (think the module is in C or
> something, didn?t found a datetime.py).
> 

In addition to staticmethod, classmethod is also nice, as it can cope with
inheritance:

class Date:
    def __init__(self, y, m, d):
        self.ymd = y, m, d
    def firstOfMonth(cls, y, m):
        return cls(y, m, 1)
    firstOfMonth = classmethod(firstOfMonth)

class PrintableDate(Date):
    def __str__(self):
        return "%04d-%02d-%02d" % self.ymd


print Date.firstOfMonth(1900, 1) # <__main__.Date instance at 0x402c36ec>
print PrintableDate.firstOfMonth(1900, 1) # 1900-01-01

Peter




More information about the Python-list mailing list