Michel wrote: > Thanks Peter. > > I searched a little bit more and wrote the following example: > > ------------------------------------ > import types > > class MyClass: > > def test_toto(self): > print type(self) > print self.name > > def test_toto(self): > print type(self) > print self.name > > MyDynClass = types.ClassType("MyDynClass", (object, ), {}) > MyDynClass.__module__ = "test.complex.hierarchy" > MyDynClass.test_toto = test_toto > > t1 = MyDynClass() > t2 = MyDynClass() > > t1.name = "Marcel" > t2.name = "Oscar" > > t1.test_toto() > t2.test_toto() > > c1 = MyClass() > c1.name = "Raoul" > c1.test_toto() > -------------------------------- > > the output is: > > <class 'test.complex.hierarchy.MyDynClass'> > Marcel > <class 'test.complex.hierarchy.MyDynClass'> > Oscar > <type 'instance'> > Raoul > > I'm wondering why the type of the self parameter is not 'instance' in > the calls > t1.test_toto() and t2.test_toto() > > The rest of the behavior is correct though, so I guess it's just > internal Python stuff. > Yes, it's just that MyClass is an old-style class (its type is <type 'classobj'>) whereas MyDynClass is a new-style class (its type is <type 'type'>, because it inherits from object).
It's as though you had written class MyClass: ... class MyDynClass(object): ... regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 See PyCon Talks from Atlanta 2010 http://pycon.blip.tv/ Holden Web LLC http://www.holdenweb.com/ UPCOMING EVENTS: http://holdenweb.eventbrite.com/ -- http://mail.python.org/mailman/listinfo/python-list