Paulo da Silva wrote: > Hi! > > Suppose I have a class A whose implementation I don't know about. > That class A has a method f that returns a A object. > > class A: > ... > def f(self, <...>): > ... > > Now I want to write B derived from A with method f1. I want f1 to return > a B object: > > class B(A): > ... > def f1(self, <...>): > ... > res=f(<...>) > > How do I return res as a B object?
In the general case you need enough knowledge about A to create a B instance from an A instance: class B(A): @classmethod def from_A(cls, a): b = cls(...) # or B(...) return b def f1(self, ...): return self.from_A(self.f(...)) If the internal state doesn't change between A and B, and A is written in Python changing the class of the A instance to B class B(A): def f1(...): a = self.f(...) a.__class__ = B return a may also work. -- https://mail.python.org/mailman/listinfo/python-list