Why can't I subclass off of "date" ?

2006-08-24 Thread davidfinance
Ok, maybe this is a stupid question, but why can't I make a subclass of
datetime.date and override the __init__ method?

---

from datetime import date

class A(date):
def __init__(self, a, b, c, d):
print a, b, c, d
date.__init__(self, 2006, 12, 11)

d = A(1, 2, 3, 4)

---

$ python break_date.py
Traceback (most recent call last):
  File "break_date.py", line 9, in ?
d = A(1, 2, 3, 4)
TypeError: function takes exactly 3 arguments (4 given)


If I make A a subclass of some toy class that is constructed with three
arguments, it works fine.  Why can't I make "date" the subclass?

Thanks for any advice.

David

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Why can't I subclass off of "date" ?

2006-08-24 Thread davidfinance
Wow, you guys are fast.

Thanks Georg and Fredrik!!

Fredrik Lundh wrote:
> [EMAIL PROTECTED] wrote:
>
> > Ok, maybe this is a stupid question, but why can't I make a subclass of
> > datetime.date and override the __init__ method?
>
> __init__ controls initialization of an already constructed object.  to
> control construction, you need to override __new__:
>
>  http://pyref.infogami.com/__new__
>
> e.g.
>
> class A(date):
>  def __new__(cls, a, b, c, d):
>  print a, b, c, d
>   return super(A, cls).__new__(cls, 2006, 12, 11)
> 
> 

-- 
http://mail.python.org/mailman/listinfo/python-list