> >from (I): > > > >class CYear: > > def __init__(self, year): > > self.__year=year > > print str(self.__year) <<---(*) > > print 'dir of: '+str(dir(self)) > > print 'type of: '+str(type(self)) > > def __str__(self): > > return "we are in "+str(self.year) > > > > > >to (IIOB): > > > >class CYearDerived(int): > > def __init__(self, year): > > super(CYearDerived,self).__init__(year) > > self.__year=year > > print str(self.__year) <<-----(*OB) > > print 'dir of: '+str( dir(self) ) > > print 'type of: '+str(type(self)) > > def __str__(self): > > return "we are in "+super(CYearDerived,self).__str__() > > >why type of (CYear(2005)) > ><type 'instance'> > > > >and type(CYearDerived) > ><class '__main__.CYearDerived'> > > > >doesn't give the same type ??? > > It's a difference between new-style and old-style classes. CYear is an > old-style class because it doesn't inherit from object. CYearDerived is a > new-style class because it inherits from int which is a subtype of object: > > >>> class C: pass # old-style class > ... > >>> type(C()) > <type 'instance'> > >>> C().__class__ > <class __main__.C at 0x008CE7B0> > > >>> class C2(object): pass # new-style class > ... > >>> type(C2()) > <class '__main__.C2'> > >>> C2().__class__ > <class '__main__.C2'> > > >>> int.__bases__ # int inherits from object > (<type 'object'>,) > > I'm not sure *why* there is this difference between the two types of > classes, but there is... aaaaah... I din't know that there was two kinds of classes. So you mean that, now the new style object should be like: class A(object): pass
>>> class A: pass ... >>> class B(object): pass ... >>> a=A() >>> b=B() I see that dir (b) compare to dir(a) provides more stuff. So the new style of a class, is not only about syntax but also about properties ??? ok, I'll try to find more about this ! > By the way extending int does not work the way you have done it here. int > is an immutable type so you have to initialize it in the __new__() method, > not in __init__(). Read the details here: > http://www.python.org/2.2/descrintro.html#__new__ this link is very usefull thanks Cedric BRINER _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor