Por que 'devolver-se' não retorna?

Eu estou tentando obter o nó superior de uma cadeia emgetTopParent(). Quando eu imprimoself.name, na verdade, imprime o nome da instância pai; no entanto, quando eu retornarself, retorna Nenhum. Por que é isso?

class A:
    def __init__( self, name ):
        self.name = name
        self.owner = None
    def setChild( self, l ):
        l.owner = self
    def getTopParent( self ):
        if( self.owner == None ): # None == top parent
            print( "Got top: %s" % self.name )
            return self
        else:
            print( "checking %s" % self.name )
            self.owner.getTopParent()

a = A( "parent" )
b = A( "child1" )
c = A( "child2" )
d = A( "child3" )
a.setChild( b )
b.setChild( c )
c.setChild( d )

print( d.getTopParent() )
>>> checking child3
    checking child2
    checking child1
    Got top: parent
    None

questionAnswers(4)

yourAnswerToTheQuestion