Python llamada constructor de su propia instancia.

class Foo(): def __init__(self): pass def create_another(self): return Foo() # is not working as intended, because it will make y below becomes Foo class Bar(Foo): pass x = Bar() y = x.create_another() 

Debería ser de clase Bar no Foo.

¿Hay algo como: self.constructor() para usar en su lugar?

Para las clases de nuevo estilo, use type(self) para obtener la clase ‘actual’:

 def create_another(self): return type(self)() 

También puede usar self.__class__ ya que ese es el type() valor type() se usará, pero siempre se recomienda usar el método API.

Para las clases de estilo antiguo (python 2, que no se heredan de un object ), type() no es tan útil, por lo que estás obligado a usar self.__class__ :

 def create_another(self): return self.__class__()