Calling a derived class's constructor from a parent method

jason jasonsewall at
Wed Jan 14 17:45:12 CET 2015

If I have a class hierarchy like so:

class A(object):
      def __init__(self, s):
            self.s = s
      def foo(self, s):
            return A(s)

class B(A):
      def __init__(self, s):
            A.__init__(self, s)

If I make a B:

b = B(0)

I'd like to return an instance of B. Is there a way to do that besides implementing a construct(self, s) for each part of the hierarchy? I.e. is there a way for the base class to look at self and find out what type to create?

I'm using Python 2.7.5, but I'm curious what the 3.x answer is too.

More information about the Python-list mailing list