'Yields a list of semantically more specific synsets, for example:
synsets("train")[0].hyponyms() =>
[Synset("boat train"),
Synset("car train"),
Synset("freight train"),
Synset("hospital train"),
Synset("mail train"),
Synset("passenger train"),
Synset("streamliner"),
Synset("subway train")'

def hyponyms(self, recursive=False, depth=None):

    p = [Synset(p.getTarget()) for p in self._synset.getPointers(wn.HYPONYM)]
    if ((depth is None) and (recursive is False)):
        return p
    if (depth == 0):
        return []
    if (depth is not None):
        depth -= 1
    if ((depth is None) or (depth > 0)):
        [p.extend(s.hyponyms(True, depth)) for s in list(p)]
    return p
