Calling a derived class's constructor from a parent method

jason jasonsewall at gmail.com
Wed Jan 14 11:45:12 EST 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 b.foo(1) 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