From: Chris Rebert on 5 Mar 2010 07:01 On Fri, Mar 5, 2010 at 2:35 AM, Auré Gourrier <aurelien.gourrier(a)yahoo.fr> wrote: <snip> > QUESTION 2: > If I go this way, I have a second problem: if I create a new class which > inherits from the previous, I would expect/like the methods from the initial > class to return instances from the new class: > > class MyClass2(MyClass): > >    def othermethods(self): >       return MyClass2(whatever) > > Then I get: > > x = list1 > y = list2 > data = MyClass2([x,y]) > finaldata = data.transformdata() > > My problem is that finaldata is (of course) an instance of MyClass and not > MyClass2. How do I deal with this ? Get the object's actual class at runtime and use that. #in MyClass def transformdata(self): newdata = transform(data) return self.__class__(newdata) When called on an instance of the subclass, self.__class__ will be MyClass2 and everything will work out. Cheers, Chris -- http://blog.rebertia.com
|
Pages: 1 Prev: Selecting MAX from a list Next: python on a thumb drive? |